iOS11导航栏leftBarButtonItem显示失常

如果按照系统自带的方法写没有问题,代码如下:

UIBarButtonItem* leftItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage  imageNamed:@"default"]

imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]

style: UIBarButtonItemStylePlaintarget:self action:@selector(leftItemAction)];

self.navigationItem.leftBarButtonItem= leftItem;

但是显示的图片是用户的头像,是一个随时可能修改的url链接,这时候系统自带的方法就无法满足了,

必须使用自定义,代码如下:

//_personalBtn为当前控制器属性值,因为用户修改图像的时候需要刷新(需要用到第三方库SDWebImage

_personalBtn= [UIButtonbuttonWithType:UIButtonTypeCustom];

_personalBtn.frame=CGRectMake(0,0,40,40);

[_personalBtn sd_setImageWithURL:[NSURL URLWithString:_model.headUrl]

forState:UIControlStateNormal placeholderImage:[UIImageimageNamed:@"ev_circle_default"]];

_personalBtn.layer.masksToBounds=YES;

_personalBtn.layer.cornerRadius=40/2;

[_personalBtn addTarget:selfaction:@selector(leftItemAction) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem* leftItem = [[UIBarButtonItem  alloc]  initWithCustomView:_personalBtn];

self.navigationItem.leftBarButtonItem= leftItem;

显示如下: 

 

 

现在显示正常,可能因为有这句代码_personalBtn.frame=CGRectMake(0,0,40,40);

当你跳转其它页面在返回回来的时候就显示如下了

连标题都不见了,是不是很奇葩,换成UIImageView也是如此。

解决代码:

  UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0,0,40,40)];

    view.backgroundColor = [UIColor clearColor];

    

    _personalBtn = [UIButton buttonWithType:UIButtonTypeCustom];

    _personalBtn.frame = CGRectMake(0, 0, 40, 40);

    [_personalBtn sd_setImageWithURL:[NSURL URLWithString:_model.headUrl] forState:UIControlStateNormal

  placeholderImage:[UIImage imageNamed:@"ev_circle_default"]];

    _personalBtn.layer.masksToBounds = YES;

    _personalBtn.layer.cornerRadius = 40/2;

    [_personalBtn addTarget:self action:@selector(leftItemAction) forControlEvents:UIControlEventTouchUpInside];

    [view addSubview:_personalBtn];

 

    UIBarButtonItem * leftItem = [[UIBarButtonItem alloc] initWithCustomView:view];

 self.navigationItem.leftBarButtonItem= leftItem;

 至于为什么解决了,我也想不明白,可能是view的大小限制了btn的大小,谢谢浏览,如果你找到了这其中的原因,求赐教

转载于:https://www.cnblogs.com/xqskzs/p/8080565.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值