第一次写简书,不知道该怎么写,就自己在iOS11开发遇到的坑说一下(说明一下,我还是个菜鸟,有什么写得不对的欢迎提出来,共勉。。。)。
关于UIScrollView的一些坑
我在开发的时候遇到过(先说明一下,我的导航栏是系统导航栏),当从一个有scrollview的界面,简单来说,我的首页有一个tableview的列表,点击其中一个进入到内页,侧滑返回的时候发现内容是在往上移的,于是问了各路大神,奈何大神们要么忙,要么说没有遇到过这个问题,于是就是去看了iOS11之后UIScrollView的一些变化,查了资料,抱着试一试的心理,在AppDelegate里面加上了一句代码
if (@available(iOS 11.0, *)) {
UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
后面这个代码也是下一个问题需要用到的
[[UISearchBar appearance] setSearchFieldBackgroundImage:[self searchFieldBackgroundImage] forState:UIControlStateNormal];
}
,加上代码再运行发现就可以了。
那么接下来说上面第二句代码的用处,我的项目有个地方是在导航栏上面放了一个UISearchBar,在iOS11之前是没有什么问题的,但是在适配iPhone X 的时候发现,怎么有UISearchBar的地方导航栏这么高,而且UISearchBar的高度也变高了,导航栏是被撑高的??
通过一番查资料,发现iOS11默认的导航栏是好像是36还是多少的,而iOS11之前是28,所以导航栏变壮了。。。为了统一,我得改变它的高度,所以上面的第二句代码就用上了
#pragma mark - searchFieldBackgroundImage iOS 11 调用方法
- (UIImage*)searchFieldBackgroundImage {
UIColor*color = [UIColor whiteColor];
CGFloat cornerRadius = 14;//圆角
CGRect rect =CGRectMake(0,0,28,28);//高度,我设为28
UIBezierPath*roundedRect = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:cornerRadius];
roundedRect.lineWidth=0;
UIGraphicsBeginImageContextWithOptions(rect.size,NO,0.0f);
[color setFill];
[roundedRect fill];
[roundedRect stroke];
[roundedRect addClip];
UIImage *image =UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
这是AppDelegate里面的方法。
然后在需要用到UISearchBar的地方再加上一下代码
if(@available(iOS 11.0, *)) {
[[_searchBar.heightAnchor constraintEqualToConstant:44] setActive:YES];
UITextField *txfSearchField = [_searchBar valueForKey:@"_searchField"];
[txfSearchField setDefaultTextAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]}];
}
搞定。
这两天又发现一个问题,据说之前用iPhone X测试是没有出现的,重点是iOS11.2也是没有这个问题的,然而,iOS11.1出现啦,就是从首页进入内页的时候标签栏下面会出现一块黑色区域,奇了怪了,怎么两部iPhone X测试一个会出现黑色块一个不会出现,难道iOS11.1和11.2又有区别?后面查资料说是标签栏上移,神马情况。。。贴代码:
CGRect frame = self.tabBarController.tabBar.frame;
frame.origin.y = [UIScreen mainScreen].bounds.size.height - frame.size.height;
self.tabBarController.tabBar.frame = frame;
再一试,可以了。。。啊哈,今天就先写到这里,第一次写简书,忘大家多多指教
网友评论