iOS11以及iPhone X 的適配

最近在做iOS11以及iPhone X 的適配,遇到的一點(diǎn)問題,簡(jiǎn)單記錄一下。
PS:模擬器我拖動(dòng)的時(shí)候老感覺拖不動(dòng) 原來要把就把鼠標(biāo)放到四個(gè)角的時(shí)候,才可以隨便拖動(dòng)

問題一、iPhone X 啟動(dòng)App齊劉海沒顯示

我的項(xiàng)目啟動(dòng)圖不是使用xib和SB適配的,結(jié)果在iPhone X上一啟動(dòng)起來就是這樣,請(qǐng)看下圖

圖一.png

解決方案

方案一:項(xiàng)目使用LaunchScreen.xib或者LaunchScreen.storyboard配置啟動(dòng)圖,這個(gè)大家都懂,就不做介紹了。

方案二:在LaunchImage 里面添加上iPhoneX的啟動(dòng)圖 規(guī)格為1125 × 2436
修改Contents.json文件,添加如下內(nèi)容

  {
      "extent": "full-screen",
      "idiom": "iphone",
      "subtype": "2436h",
      "filename": "1125_2436.png",
      "minimum-system-version": "11.0",
      "orientation": "portrait",
      "scale": "3x"
  }

然后齊劉海就出來了,我看著齊劉海特別像牛角,挺可愛的,工程啟動(dòng)圖如下:

圖二.png

問題二:iOS11 的 UITableview UICollectionView MJRefresh下拉刷新顯示

iOS11表格用MJRefresh框架下拉刷新的時(shí)候界面會(huì)閃,顯示紊亂,
原因是iOS11棄用了automaticallyAdjustsScrollViewInsets屬性,新增contentInsetAdjustmentBehavior來替代它

_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

  //聲明tableView的位置 添加下面代碼  


    if (@available(iOS 11.0, *)) {  
        _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;  
        _tableView.contentInset = UIEdgeInsetsMake(64, 0, 49, 0);  
        _tableView.scrollIndicatorInsets = _tableView.contentInset;  
    }

問題三:iOS 11 自定義UINavigationBar適配問題,導(dǎo)航條向上偏移20點(diǎn)問題

解決方案 自己寫一個(gè)類 繼承UINavigationBar 重寫layoutSubviews方法改變frame即可。

Swift

override func layoutSubviews() {
    super.layoutSubviews()
    

    if #available(iOS 11.0, *) {

        for itemView in subviews {
           
            let albumClassName = NSStringFromClass(itemView.classForCoder)
            if albumClassName.contains("Background"){
            
                itemView.frame = bounds
            } else if albumClassName.contains("ContentView"){
                
                var frame = itemView.frame
                frame.origin.y = 64 - 44
                frame.size.height = bounds.size.height - frame.origin.y
                itemView.frame = frame
            }
            
        }

    }
}

OC

- (void)layoutSubviews {
  [super layoutSubviews];

   if (@available(iOS 11.0, *)) {

    for (UIView *view in self.subviews) {
        if([NSStringFromClass([view class]) containsString:@"Background"]) {
            view.frame = self.bounds;
        }
        else if ([NSStringFromClass([view class]) containsString:@"ContentView"]) {
            CGRect frame = view.frame;
            frame.origin.y = 64 - 44;
            frame.size.height = self.bounds.size.height - frame.origin.y;
            view.frame = frame;
        }
    }
  }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 隨著iOS11和xcode9剛開始正式發(fā)布,小編也迫不及待的更新了xcode9,手機(jī)也順利更新到iOS,也終于見到...
    七秒記憶的魚兒閱讀 96,442評(píng)論 97 410
  • iOS11與iPhone X的適配 文章講解點(diǎn):1.首先看一下iPhone X的模擬器樣式吧2.iPhone X的...
    iYeso閱讀 491評(píng)論 0 3
  • 今天更新了xcode9,也終于見到iPhone X 的真面,看著齊劉海的樣式,真心難看,怎么適配,如何快速適配到項(xiàng)...
    貝勒老爺閱讀 4,298評(píng)論 3 25
  • 蘋果公司于2017年9月13日凌晨發(fā)布了兩款新的手機(jī)—— iPhon 8與iPhone X,作為全新的屏幕樣式 i...
    LearningCoding閱讀 6,123評(píng)論 2 6
  • 如果你的天空下起了雨 我愿為你的心靈撐一把希望的傘 直到阿爾卑斯隔開意大利和西西里 如果我是百靈 我愿一輩子為你歌...
    振宇一郎閱讀 305評(píng)論 0 0