iOS11适配相关问题

2017-11-28  本文已影响15人  心亦逸风

1.UITableView自动计算内边距

在ios11上没有导航栏的tableView上下会各多处一块区域,类似于这样


是因为在ios11上UIScrollView的属性contentInsetAdjustmentBehavior默认是UIScrollViewContentInsetAdjustmentAutomatic会自动计算内边距。
把它设成UIScrollViewContentInsetAdjustmentNever就好了,因为这个值是ios11才有的,所以要写成

if (@available(iOS 11.0, *)) {
     _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}

2.导航栏按钮偏移

之前因为不希望导航栏的按钮太贴近边缘所以通过设了一个空的UIBarbuttonItem来使导航栏按钮和边缘空隙加大:

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
                                           target:nil action:nil];
negativeSpacer.width = -9;
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, _leftBackItem, nil];

但是在ios11上失效了,为了达到同样的效果,我就使用UIButton上的contentEdgeInsets和imageEdgeInsets属性将内容和图片做偏移:

UIButton *leftButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
[leftButton setImage:[UIImage imageNamed:@"ic_back"] forState:UIControlStateNormal];
leftButton.contentEdgeInsets = UIEdgeInsetsMake(0, -9,0, 0);
leftButton.imageEdgeInsets = UIEdgeInsetsMake(0, -9, 0, 0);
        
[leftButton addTarget:self action:@selector(clickLeftItemForBack:) forControlEvents:UIControlEventTouchUpInside];
_leftBackItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];

右边的按钮同理,具体偏移的大小根据自己的需要更改。

3.UISearchBar大小变化

UISearchBar和UISwitch控件一样,高度是固定的,之前都是44,ios11上的高度变成了56。

上一篇下一篇

猜你喜欢

热点阅读