美文网首页ios
iOS11下自定义leftBarButtonItem大小改变的问

iOS11下自定义leftBarButtonItem大小改变的问

作者: 一束强光 | 来源:发表于2018-02-07 10:23 被阅读1812次

iOS11下,leftBarButtonItem异常情况

一般leftBarButtonItem加载网络图片或因为其他问题,必须要在leftBarButtonItem使用自定义的UIButton时,就会因为图片太大,导致设置为UIButton的背景图片时,因为图片太大,拉宽leftBarButtonItem。如下图:

被拉宽的leftBarButtonItem

原始的方法为xib文件或者是自定义的:

UIButton *leftCustomButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];

[leftCustomButton setBackgroundImage:[UIImage imageNamed:@"defaultImage"] forState:UIControlStateNormal];

UIBarButtonItem * leftButtonItem =[[UIBarButtonItem alloc] initWithCustomView:leftCustomButton];

self.navigationItem.leftBarButtonItems = @[self.headerIconItem]; 

但是直接设置UIButton的frame在iOS 11下是没有作用的,解决方法如下:

  UIButton *leftCustomButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];

  [leftCustomButton setBackgroundImage:[UIImage imageNamed:@"defaultImage"] forState:UIControlStateNormal];

  UIView *leftCustomView = [[UIView alloc] initWithFrame: leftCustomButton.frame];

   [leftCustomView addSubview: leftCustomButton];
UIBarButtonItem * leftButtonItem =[[UIBarButtonItem alloc] initWithCustomView: leftCustomView];

  self.navigationItem.leftBarButtonItems = @[self.headerIconItem]; 

即在UIButton上在包装一层UIView,即可实现修改leftBarButtonItem的大小。
修改之后如下图:


正常大小的leftBarButtonItem

相关文章

网友评论

  • 陈藩:感谢作者解决了我一个问题。
    一束强光:不客气,我也是一次很突然的机会发现的这个坑,本来5点半下班了,发现了这个问题,说改了就走,结果拖到了7点才发现只能有这个办法解决。。。

本文标题:iOS11下自定义leftBarButtonItem大小改变的问

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