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

2017-09-13  本文已影响1843人  妳笇what

熬夜看了一下发布会,唉,又要适配了,但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倍图


修改好了
上一篇下一篇

猜你喜欢

热点阅读