美文网首页
iOS11以及iPhone X 的适配

iOS11以及iPhone X 的适配

作者: 红姑娘 | 来源:发表于2017-09-22 17:24 被阅读68次

    最近在做iOS11以及iPhone X 的适配,遇到的一点问题,简单记录一下。
    PS:模拟器我拖动的时候老感觉拖不动 原来要把就把鼠标放到四个角的时候,才可以随便拖动

    问题一、iPhone X 启动App齐刘海没显示

    我的项目启动图不是使用xib和SB适配的,结果在iPhone X上一启动起来就是这样,请看下图

    图一.png

    解决方案

    方案一:项目使用LaunchScreen.xib或者LaunchScreen.storyboard配置启动图,这个大家都懂,就不做介绍了。

    方案二:在LaunchImage 里面添加上iPhoneX的启动图 规格为1125 × 2436
    修改Contents.json文件,添加如下内容

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

    然后齐刘海就出来了,我看着齐刘海特别像牛角,挺可爱的,工程启动图如下:

    图二.png

    问题二:iOS11 的 UITableview UICollectionView MJRefresh下拉刷新显示

    iOS11表格用MJRefresh框架下拉刷新的时候界面会闪,显示紊乱,
    原因是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适配问题,导航条向上偏移20点问题

    解决方案 自己写一个类 继承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;
            }
        }
      }
    
    }
    

    相关文章

      网友评论

          本文标题:iOS11以及iPhone X 的适配

          本文链接:https://www.haomeiwen.com/subject/orvfextx.html