很多时候我们会遇到这样的需求,一个按钮上需要既有图片又有字符串的情况。
这个时候就需要使用EdgeInsets 属性。
官方说明:
typedef struct UIEdgeInsets {
CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset'
} UIEdgeInsets;
具体代码如下:
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(80*i, 0, 80, 49)];
[btn setBackgroundColor:[UIColor clearColor]];
[btn setBackgroundImage:[UIImage imageNamed:@"detail_back_common.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"detail_back_pressed.png"] forState:UIControlStateHighlighted];
SEL sel = NSSelectorFromString(selectors[i]);
[btn addTarget:self action:sel forControlEvents:UIControlEventTouchUpInside];
[btn setImage:[UIImage imageNamed:images[i]] forState:UIControlStateNormal];
[btn setTitle:titles[i] forState:UIControlStateNormal];
btn.titleLabel.font = [UIFont systemFontOfSize:14.0];
[btn setTitleColor:COMMON_BG_COLOR forState:UIControlStateNormal];
[btn setImageEdgeInsets:UIEdgeInsetsMake(-21.0, 28.0, 0.0, 0.0)];
[btn setTitleEdgeInsets:UIEdgeInsetsMake(15.0, -19.0, 0.0, 0.0)];
[bottomBar addSubview:btn];
所以很多属性的关系需要我们灵活使用
setBackgroundImage
setImage
setTitle
setImageEdgeInsets
setTitleEdgeInsets
重点就是多多看看API
只是抛砖引玉,有兴趣的自己多学习。