UIButton能夠設置一個背景圖片,圖標,以及文字字體
若是同時設置圖標和文字,默認文字在右邊,圖片在左邊。
spa
若是須要自定義一個下圖的效果,就須要自定義一個UIButton
code
在這個方法中進行初始化
orm
- (id)initWithFrame:(CGRect)frame;
圖片
改寫- (CGRect)imageRectForContentRect:(CGRect)contentRect;這個方法來設置圖標的位置it
改寫- (CGRect)titleRectForContentRect:(CGRect)contentRect;這個方法來設置文字label的位置io
#import "HMTitleButton.h" @implementation HMTitleButton - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // 內部圖標居中 self.imageView.contentMode = UIViewContentModeCenter; // 文字對齊 self.titleLabel.textAlignment = NSTextAlignmentRight; // 文字顏色 [self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; // 字體 self.titleLabel.font = HMNavigationTitleFont; // 高亮的時候不須要調整內部的圖片爲灰色 self.adjustsImageWhenHighlighted = NO; } return self; } /** * 設置內部圖標的frame */ - (CGRect)imageRectForContentRect:(CGRect)contentRect { CGFloat imageY = 0; CGFloat imageW = self.height; CGFloat imageH = imageW; CGFloat imageX = self.width - imageW; return CGRectMake(imageX, imageY, imageW, imageH); } /** * 設置內部文字的frame */ - (CGRect)titleRectForContentRect:(CGRect)contentRect { CGFloat titleY = 0; CGFloat titleX = 0; CGFloat titleH = self.height; CGFloat titleW = self.width - self.height; return CGRectMake(titleX, titleY, titleW, titleH); } @end
我之前竟然很傻很天真的去初始化3個控件,底部UIButton,上面放UIImageView和UILabel真是夠了。。。class