关于iOS11遇到的那些坑

2018-01-25  本文已影响0人  什么_呢

第一次写简书,不知道该怎么写,就自己在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;

再一试,可以了。。。啊哈,今天就先写到这里,第一次写简书,忘大家多多指教

上一篇 下一篇

猜你喜欢

热点阅读