美文网首页
iOS UIBarButtonItem问题

iOS UIBarButtonItem问题

作者: wwwwwwdi | 来源:发表于2018-07-16 10:01 被阅读716次

    项目中有段代码,是用来设置导航栏上按钮的,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,这里记录一下

    相关文章

      网友评论

          本文标题:iOS UIBarButtonItem问题

          本文链接:https://www.haomeiwen.com/subject/nxpvpftx.html