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

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。