依然直接上代碼,很簡單 2行 就實現(xiàn)
第一種解決方案:
UIButton *leftBtn = [[UIButton alloc] init];
[leftBtn setTitle:@"北京" forState:UIControlStateNormal];
[leftBtn setImage:[UIImage imageNamed:@"選擇城市箭頭"] forState:UIWindowLevelNormal];
leftBtn.titleLabel.font = kFont(13);
leftBtn.frame = CGRectMake(0, 0, 40, 44);
leftBtn.showsTouchWhenHighlighted = YES;
leftBtn.contentEdgeInsets = UIEdgeInsetsMake(0, -5, 0, 0);
// 重點位置開始
leftBtn.imageEdgeInsets = UIEdgeInsetsMake(0, leftBtn.titleLabel.width + 2.5, 0, -leftBtn.titleLabel.width - 2.5);
leftBtn.titleEdgeInsets = UIEdgeInsetsMake(0, -leftBtn.currentImage.size.width, 0, leftBtn.currentImage.size.width);
// 重點位置結(jié)束
leftBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
UIBarButtonItem *leftItemBtn = [[UIBarButtonItem alloc] initWithCustomView:leftBtn];
self.navigationItem.leftBarButtonItem = leftItemBtn;
第二種解決方案:
自定義一個按鈕集成UIButton 然后在 layoutSubViews里面重新計算位置和偏移量
- (void)layoutSubviews {
[super layoutSubviews];
// // Center image
// CGPoint center = self.imageView.center;
// center.x = self.frame.size.width/2;
// center.y = self.imageView.frame.size.height/2 + 13;
// self.imageView.center = center;
//
// // self.imageView.height = 27.0;
// // self.imageView.width = 28.0;
//
// //Center text
// CGRect newFrame = [self titleLabel].frame;
// newFrame.origin.x = 0;
// newFrame.origin.y = CGRectGetMaxY(self.imageView.frame) + 5;
// newFrame.size.width = self.frame.size.width;
//
// self.titleLabel.frame = newFrame;
// self.titleLabel.textAlignment = NSTextAlignmentCenter;
CGRect titleF = self.titleLabel.frame;
CGRect imageF = self.imageView.frame;
titleF.origin.x = 0;
self.titleLabel.frame = titleF;
imageF.origin.x = CGRectGetMaxX(titleF) + 10;
self.imageView.frame = imageF;
}
- 提示
當設(shè)置后,文字依然跑偏,解決方案:首先排查是否設(shè)置了setImage圖片或者是否調(diào)用了[self.button layoutIfNeeded];