UIButton的相關技巧

自定義UIButton

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

相關文章
相關標籤/搜索