记录成长
分享知识

iOS11适配遇到的问题及其解决办法

最近更新了iOS11的版本,发现一些修改的地方影响的比较严重,结合网上的一些资料,在此做一个汇总

  • tableview内容偏移
  • cell侧滑

1 tableview内容偏移

在此之前,首先解释一下一个控制器的属性automaticallyAdjustsScrollViewInsets

automaticallyAdjustsScrollViewInsets,当设置为YES时(默认YES),如果视图里面存在唯一一个UIScrollView或其子类View,那么它会自动设置相应的内边距,这样可以让scroll占据整个视图,又不会让导航栏遮盖。

也就是加载完成后,真实显示出的内容会出现向下偏移,一般是64或者84(打电话)或者20(无navbar导航栏)。

内容与边界的距离

内容与边界的距离

在UITableView和UItableViewCell之间有一个UITableViewWrapperView层(注:在iOS11中,该层已经消失)

iOS11中的tableview结构

两个层顶部相差一定的距离(64/84/20/···)

解决这个问题很简单,只要把控制器的 automaticallyAdjustsScrollViewInsets设置成NO即可。也就是说不要自动布局。

 

不幸的是,iOS11废弃了此方法。

在OC的声明中,这个属性是这样的:

这说明在iOS11中, UIViewController的automaticallyAdjustsScrollViewInsets属性已经失效
需要使用UIScrollView的 contentInsetAdjustmentBehavior 属性替代.

由于automaticallyAdjustsScrollViewInsets是iOS11新增的方法。因此在使用时需要判断

2 cell侧滑

IOS更新后,侧滑控件的位置从CELL内部移动到与CELL平级的层级中

iOS10 侧滑控件在cell内

iOS11 侧滑控件在tableview内,与cell平级
这就导致之前修改字体等属性的方法不能用了

 

iOS8~iOS10的侧滑菜单属于cell的子视图,并且每个按钮都是独立的。
但是iOS11中,侧滑的控件不仅仅变成跟cell平级,而且多个按钮之间也是叠加的状态

iOS10 结构 图六, 可以看到每个按钮分开的

iOS11 结构 图七, 可以看到按钮是叠加的

iOS11的cell,新增的方法中可以添加图片了。如果需要修改一些参数,需要在tableView的代理方法中开始重绘。
 

不过我的需求需要修改侧滑按钮的宽度,而且需要每个按钮独立(需要设置圆角)。iOS11的重叠结构不是很合适(虽然何以通过添加带颜色的子view,然后全透明背景来实现),而且没有找到自定义宽度的方式。所以我还是采用了三方控件(MGSwipeTableCell)
 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:外贸技术家园 » iOS11适配遇到的问题及其解决办法

分享到: 生成海报

热门文章

  • 评论 抢沙发

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址
    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活