UIButton设置图片和文字(一)

在开发的过程中经常会遇到需要在button中放置图片和文字,比如将图片放置在button左边,文字放置在右边。因为UIButton也是继承自UIView,因此可以像其它的view一样添加subView,

//创建button
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// 创建imageview
UIImage *image = [UIImage imageNamed:@"yourImage.png"];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(/*frame*/)];
[imageView setImage:image];
// 创建label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(/*frame*/)];
[label setText:@"Your title"];
// 添加到button中
[button addSubview:label];
[button addSubview:imageView];

这种方法的好处是简单明了,但是其实在UIButton中已经包含了UIImageView,我们不需要在自己添加该imageView的。也可以采用如下的方法,但是该方法的在调整UI时比较不方便

 cardNameBtn = [UIButton buttonWithType:UIButtonTypeCustom];
    [cardNameBtn setTitle:@"集卡名称" forState:UIControlStateNormal];
//图片
    [cardNameBtn setImage:[UIImage imageNamed:@"card_flag_image"] forState:UIControlStateNormal];
//图片基于文字的相对位置
    cardNameBtn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
    cardNameBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
//文字和图片居中 
    cardNameBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
    [self addSubview:cardNameBtn];

还可以设置点击时候的图片改变

[self.forwardBtn setImage:[UIImage imageNamed:@"Forward_select.png"] forState:UIControlStateHighlighted];
[self.forwardBtn setTitleColor:RGBCOLOR(255, 160, 31) forState:UIControlStateHighlighted];

样式如下:


UIButton设置图片和文字(一)_第1张图片
209BB1F4-E4C1-45A0-AD6B-5799C6155B8F.png

你可能感兴趣的:(UIButton设置图片和文字(一))