美文网首页
Xcode9+iphoneX可能会遇到的适配问题

Xcode9+iphoneX可能会遇到的适配问题

作者: 妳笇what | 来源:发表于2017-09-13 16:25 被阅读1843次

    熬夜看了一下发布会,唉,又要适配了,但iOS最起码比Android那边适配还是轻松点。运行iPhoneX模拟器,发现原先在7p上完好的适配竟然有问题。


    tableview这一块的空白是什么原因?

    ,但是在其它设备上确实没有这个问题啊。包括下面的tableBar也有点不适应。好吧,我首先想到是不是应该

    self.automaticallyAdjustsScrollViewInsets = NO;
    

    ,检查一下代码(反正也是别人的项目,得从头开始查看),没有问题。难道是自动打开了Self-Sizing的原因?但是这里纯手写代码,并没有用xib啊,管他的,先关闭再说,在iOS 11中Table Views默认启用Self-Sizing的,Headers, footers, and cells都默认开启Self-Sizing,,我就在代码中添加了关闭的代码:

    self.tableView.estimatedRowHeight = 0;
    self.tableView.estimatedSectionHeaderHeight = 0;
    self.tableView.estimatedSectionFooterHeight = 0;
    

    运行一下,然并卯啊!!!,我表示很无奈,没办法,开始查阅资料。我靠!

    @property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets API_DEPRECATED_WITH_REPLACEMENT("Use UIScrollView's contentInsetAdjustmentBehavior instead", ios(7.0,11.0),tvos(7.0,11.0)); // Defaults to YES
    

    iOS11弃用了automaticallyAdjustsScrollViewInsets属性,新增contentInsetAdjustmentBehavior来替代它。


    contentInsetAdjustmentBehavior

    /* Configure the behavior of adjustedContentInset.
     Default is UIScrollViewContentInsetAdjustmentAutomatic.
     */
    @property(nonatomic) UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior API_AVAILABLE(ios(11.0),tvos(11.0));
    
    typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {
        UIScrollViewContentInsetAdjustmentAutomatic,
        // 和scrollableAxes一样,scrollView会自动计算和适应顶部和底部的内边距并且在scrollView 不可滚动时,也会设置内边距.
        UIScrollViewContentInsetAdjustmentScrollableAxes, 
        //自动计算内边距. 
        UIScrollViewContentInsetAdjustmentNever, 
        // 不计算内边距
        UIScrollViewContentInsetAdjustmentAlways, 
       // 根据safeAreaInsets 计算内边距
    

    呦呦切克闹,开始适配,只需要判断一下

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

    在声明tableView地方添加就可以解决了
    如果出现没有全屏的情况下,应该是你的launchImages的原因,让美工出一个@3倍图


    修改好了

    相关文章

      网友评论

          本文标题:Xcode9+iphoneX可能会遇到的适配问题

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