曰本美女∴一区二区特级A级黄色大片, 国产亚洲精品美女久久久久久2025, 页岩实心砖-高密市宏伟建材有限公司, 午夜小视频在线观看欧美日韩手机在线,国产人妻奶水一区二区,国产玉足,妺妺窝人体色WWW网站孕妇,色综合天天综合网中文伊,成人在线麻豆网观看

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>通訊/手機(jī)編程>

適用iOS11和iPhoneX的一些變化

大?。?/span>0.3 MB 人氣: 2017-09-22 需要積分:1

  前陣子項(xiàng)目開(kāi)發(fā)忙成狗,就一直沒(méi)做iOS11的適配,直到XcodeGM版發(fā)布后,我胸有成竹的在iPhoneX上跑起項(xiàng)目,整個(gè)人都涼透了。。.下面總結(jié)一下我遇到的坑,不是很全面,日后補(bǔ)充。

  導(dǎo)航欄

  導(dǎo)航欄高度的變化

  iOS11之前導(dǎo)航欄默認(rèn)高度為64pt(這里高度指statusBar + NavigationBar),iOS11之后如果設(shè)置了prefersLargeTitles = YES則為96pt,默認(rèn)情況下還是64pt,但在iPhoneX上由于劉海的出現(xiàn)statusBar由以前的20pt變成了44pt,所以iPhoneX上高度變?yōu)?8pt,如果項(xiàng)目里隱藏了導(dǎo)航欄加了自定義按鈕之類的,這里需要注意適配一下。

  導(dǎo)航欄圖層及對(duì)titleView布局的影響

  iOS11之前導(dǎo)航欄的title是添加在UINavigationItemView上面,而navigationBarButton則直接添加在UINavigationBar上面,如果設(shè)置了titleView,則titleView也是直接添加在UINavigationBar上面。iOS11之后,大概因?yàn)閘argeTitle的原因,視圖層級(jí)發(fā)生了變化,如果沒(méi)有給titleView賦值,則titleView會(huì)直接添加在_UINavigationBarContentView上面,如果賦值了titleView,則會(huì)把titleView添加在_UITAMICAdaptorView上,而navigationBarButton被加在了_UIButtonBarStackView上,然后他們都被加在了_UINavigationBarContentView上,如圖:

  適用iOS11和iPhoneX的一些變化

  所以如果你的項(xiàng)目是自定義的navigationBar,那么在iOS11上運(yùn)行就可能出現(xiàn)布局錯(cuò)亂的bug,解決辦法是重寫(xiě)UINavigationBar的layoutSubviews方法,調(diào)整布局,上代碼:

  - (void)layoutSubviews { [super layoutSubviews]; //注意導(dǎo)航欄及狀態(tài)欄高度適配 self.frame = CGRectMake(0, 0, CGRectGetWidth(self.frame), naviBarHeight); for (UIView *view inself.subviews) {if([NSStringFromClass([view class]) containsString:@“Background”]) {view.frame = self.bounds; } elseif ([NSStringFromClass([view class])containsString:@“ContentView”]) { CGRectframe = view.frame;frame.origin.y = statusBarHeight; frame.size.height =self.bounds.size.height - frame.origin.y; view.frame = frame; } }}

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?