標籤:rect .so 跳轉 app events err touch sel space
如果按照系統內建的方法寫沒有問題,代碼如下:
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的大小,謝謝瀏覽,如果你找到了這其中的原因,求賜教
iOS11導覽列leftBarButtonItem顯示失常