美文网首页
iOS11遇到的坑及解决方法

iOS11遇到的坑及解决方法

作者: Sulas | 来源:发表于2017-10-12 09:15 被阅读0次

1、iOS 11之前的导航栏的高度是64px(状态条+导航栏),iOS11之后如果设置了prefersLargeTitles = YES(默认NO)则为96pt。所以一般不用管。

2、在iOS 11上运行tableView向下偏移64px或者20px,因为iOS 11废弃了automaticallyAdjustsScrollViewInsets,而是给UIScrollView增加了contentInsetAdjustmentBehavior属性。避免这个坑的方法是要判断

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

_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

}else {

self.automaticallyAdjustsScrollViewInsets = NO;

}

3、tableView的sectionHeader、sectionFooter高度与设置不符,因为tableView的estimatedRowHeight、estimatedSectionHeaderHeight、 estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension。最简单的方法就是直接设置为0。

4、iPhone X状态条由20px变成了44px,UITabBar由49px变成了83px。设置布局时y直接写成64的就要根据机型设置。可以设置宏

#define Device_Is_iPhoneX ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(1125, 2436), [[UIScreen mainScreen] currentMode].size) : NO),

然后再设置。

5.IOS11 之前,不想让scrollView偏移64px,设置automaticallyAdjustsScrollViewInsets=NO就可以了。IOS11以后就废弃了,使用scrollView的属性contentInsetAdjustmentBehavior来防止偏移。

UIScrollViewContentInsetAdjustmentAutomatic

UIScrollViewContentInsetAdjustmentScrollableAxes

UIScrollViewContentInsetAdjustmentNever

UIScrollViewContentInsetAdjustmentAlways

这里我们直接选Never就可以了

这里要注意的是,需要判断当前系统

//ios11 设置scrollView偏移

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

_scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

}else {

self.automaticallyAdjustsScrollViewInsets = NO;

}

6.navigation bar 的titleView支持了autolayout,需要titleView自己撑开或者重写了- intrinsicContentSize方法。intrinsicContentSize顾名思义,固定大小的意思,主要是解决一些模糊约束的问题。更多知识可以看这篇文章详解intrinsicContentSize

不做适配在IOS11会遇到的问题:

titleView对应的View大小和预期不一致。

titleView对应的View有点击事件会无法触发

解决方法是直接重写titleView对应View的intrinsicContentSize方法

- (CGSize)intrinsicContentSize {

return UILayoutFittingExpandedSize;

}

7.在IOS11,原有的NSLocationAlwaysUsageDeion被降级为NSLocationWhenInUseUsageDeion。因此,在原来项目中使用requestAlwaysAuthorization获取定位权限,而未在plist文件中配置NSLocationAlwaysAndWhenInUseUsageDeion,系统框不会弹出。建议新旧key值都在plist里配置,反正我试下来是没有问题,唯一的区别是使用requestAlwaysAuthorization获取权限 IOS11系统弹框会把几种权限级别全部列出,供用户选择,显然更人性化了哈~~

相关文章

  • iOS11遇到的坑及解决方法

    1、iOS 11之前的导航栏的高度是64px(状态条+导航栏),iOS11之后如果设置了prefersLargeT...

  • iOS11遇到的坑及解决方法

    1、iOS 11之前的导航栏的高度是64px(状态条+导航栏),iOS11之后如果设置了prefersLargeT...

  • IOS11 遇到的坑

    1. 默认导航栏返回按钮修改 如果我们想要隐藏导航栏返回按钮的文字并且想使用自己的图片代替原有的返回图片,我...

  • Ionic安卓兼容

    使用Ionic开发跨平台应用遇到的各种坑,及解决方法 Q1: WebView受安卓系统版本的影响出现兼容问题(Io...

  • iOS11适配(trailingSwipeActionsConf

    iOS11适配遇到的坑 一.UITableView 1.scrollView展示出现下移 解决办法 [UIScro...

  • 呼吸轮播图实现及问题解决方法

    一、实现 二、遇到的问题及解决方法

  • 适配iOS11记录

    记录一下适配iOS11过程中遇到的问题以及解决方法。 1、tableView向下偏移20point app首页上,...

  • iOS11 UITableView遇到的坑

    问题: iOS11上, UITableview不能滑动到最后一行的bug. 最近项目在做即时通讯的IM的app,...

  • IOS11 适配遇到的坑

    IOS11正式版马上就要发布了,是时候适配一波了。下面就来说说我适配过程中遇到的坑吧。 UITableView:默...

  • ios11 stroryBoard遇到的坑

    没事玩玩ios11新特性,导航栏的大小标题切换问题,就两行代码的事,折腾了好久没发现为什么当滑动 滑动试图时(比...

网友评论

      本文标题:iOS11遇到的坑及解决方法

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