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,这里记录一下

上一篇下一篇

猜你喜欢

热点阅读