iOS UIBarButtonItem问题
2018-07-16 本文已影响716人
wwwwwwdi
项目中有段代码,是用来设置导航栏上按钮的,iOS11上显示正常,iOS10不显示
- (void)viewDidLoad {
UIBarButtonItem *clearBtn = [self getBarButtonItemWithTitleStr:@"清空" Sel:@selector(didClickClearButton:)];
self.navigationItem.rightBarButtonItems = @[clearBtn];
}
- (UIBarButtonItem *)getBarButtonItemWithTitleStr:(NSString *)titleStr Sel:(SEL)sel{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
[btn setTitle:titleStr forState:UIControlStateNormal];
[btn setTitleColor:UIColorFromRGB(0x999999) forState:UIControlStateNormal];
btn.titleLabel.font = TT_MEDIUM_FONT(16);
[btn addTarget:self action:sel forControlEvents:UIControlEventTouchUpInside];
//btn.size = CGSizeMake(23, 23);
//[btn sizeToFit];
UIBarButtonItem *btnItem = [[UIBarButtonItem alloc] initWithCustomView:btn];
return btnItem;
}
主要问题就在注释的那两行代码那里
可以看到这里使用的是自定义的view来初始化的UIBarButtonItem
,然后自定义view并没有设置frame!!!
可能是iOS11的时候,如果不设置系统SDK会默认给添加上,所以iOS11并没有什么问题,
但是要考虑兼容性的话,这里还是要把这两行给添加上
btn.size = CGSizeMake(23, 23);
[btn sizeToFit];
也就是给costomView一个指定的frame,这样不管是什么系统版本,都不会出问题了,
这里是review代码的bug,这里记录一下