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。