我們常常需要用到按鈕需要文字和圖片同時顯示,例如:
我們需要定義一個UIButton的子類
實現文件
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//可根據自己的需要隨意調整
self.titleLabel.textAlignment=NSTextAlignmentRight;
self.titleLabel.font=[UIFont systemFontOfSize:14.0];
self.imageView.contentMode=UIViewContentModeLeft;
}
return self;
}
//重寫父類UIButton的方法
//更具button的rect設定並返回文本label的rect
- (CGRect)titleRectForContentRect:(CGRect)contentRect
{
CGFloat titleW = contentRect.size.width-30;
CGFloat titleH = contentRect.size.height;
CGFloat titleX = 0;
CGFloat titleY = 0;
contentRect = (CGRect){{titleX,titleY},{titleW,titleH}};
return contentRect;
}
//更具button的rect設定並返回UIImageView的rect
- (CGRect)imageRectForContentRect:(CGRect)contentRect
{
CGFloat imageW = 25;
CGFloat imageH = 25;
CGFloat imageX = contentRect.size.width-26;
CGFloat imageY = 2.5;
contentRect = (CGRect){{imageX,imageY},{imageW,imageH}};
return contentRect;
}
//使用UIButton的子類
yxpButton *selectAreaButton=[[yxpButton alloc] initWithFrame:CGRectMake(200, 5, 100, 30)];
[selectAreaButton setTitle:@"圖文混排" forState:UIControlStateNormal];
[selectAreaButton setImage:[UIImage imageNamed:@"location"] forState:UIControlStateNormal];
[selectAreaButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[navigationBgView addSubview:selectAreaButton];
就這樣 就可以實現一個按鈕的圖文混排了