iOS兼容性问题处理
2017-11-02 » iOS开发基础iOS 11 新东西
下面文章基本都已经介绍
补充一部分内容
1、bigTitle 自动缩放,当你设置tableView的时候,会自动缩放,largeTitleTextAttributes 可以设置自定义bigTitle属性
2、打开图层,我们可以看到小标题其实还在,只是被隐藏
bigTitleView:_UINavigationBarLargeTitleView
smallTitleView :_UINavigationBarContentView
所以如果我们这个时候替换navigationItem的titleView 其实只能替换 _UINavigationBarContentView
3、添加搜索很方便 navigationItem.searchController = UISearchController(searchResultsController: nil)
IOS 11上可以直接使用约束自动布局控制Navigationitem的大小、之前系统需要固定frame
IOS 11以前 tableView中又一层私有api
tableview的uitableViewwrapperView下移 tableHeadView
IOS 11 动态变更 Navigationitem 中的图片,会影响布局,原因就是约束问题,btn中得图片受约束影响,当图片下载回来后,图片的大小影响导致按钮被放大,从而影响布局
[weakSelf.customBtn.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.height.mas_equalTo(26);
make.bottom.equalTo(weakSelf.customBtn).offset(-10);
make.left.equalTo(weakSelf.customBtn).offset(10);
make.right.equalTo(weakSelf.customBtn).offset(-10);
make.top.equalTo(weakSelf.customBtn).offset(10);
}];
iPhone X 新东西
1.相册访问权限
iOS11上系统默认打开了用户相册的访问权限,但是当你保存图片时APP就会crash,原因是需要在info.plist再申明一个NSPhotoLibraryAddUsageDescription的key,同时为了兼容iOS11以前的机型,保留以前NSPhotoLibraryUsageDescription的key
动态获取iphoneX影响得到的导航高度、toolbar的高度
static let navigationMargin: CGFloat = UIApplication.shared.statusBarFrame.size.height + 44
UITableView点击失效
IOS 不能触发didSelectRowAtIndexPath事件的原因
调试事件丢失的方法:
可能原因:
- delegate没有设置。
- 可能tableview被其他控件覆盖。
- 添加UITapGestureRecognizer手势识别后,UITableView的didSelectRowAtIndexPath失效,两者之间手势发生冲突。
答案:
- 前两种情况有没有问题,有的话解决掉,没有就跳过。
- 如果前两种情况都不是,那看看是不是你在什么地方添加了手势,如果添加了可能原因是: UITapGestureRecognizer截获了touch事件,导致didSelectRowAtIndexPath方法无法响应。 查阅了相关文档后找到了一种可行的解决方法:重写UIGestureRecognizerDelegate中的- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch方法。
http://blog.gocy.tech/2016/11/19/iOS-touch-handling/
https://github.com/SwipeCellKit/SwipeCellKit/issues/48
UISwipeDismissalGestureRecognizer
适配 https://juejin.im/post/5b1a9e32518825137e13ac3e