有时候btn上边的文字是需要左对齐的,但是左对齐又太靠边,显得不大好看,所以要设置下title的间距:
//设置左对齐
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
//距离左边10个像素
button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
上边只是简单使用,大多数情况下,会有左图右文字或者上图下字的设计。用一个Btn和一个Lab拼太繁琐,当然你也可以直接封装好一个模板。。不过btn的两个属性就能很方便的帮我们解决这个问题 :
1.setTitleEdgeInsets
2.setImageEdgeInsets
下边列一个具体的代码实现,能看明白的更好,看不明白的也可以直接拿来用。随后会整理出两个属性设置的规律。
- 左图右字
/**
* 设置左图右文字
*/
-(void)event_setLeftImgRightTitle
{
UIButton *replyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
replyBtn.backgroundColor = [UIColor whiteColor];
// replyBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
// replyBtn.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
replyBtn.titleLabel.font = [UIFont systemFontOfSize:12.0f];
replyBtn.frame = CGRectMake(100, 200, 60, 26);
[replyBtn setTitle:@"回复" forState:UIControlStateNormal];
[replyBtn setTitleColor:UIColorFromRGB(0x999999, 1.0) forState:UIControlStateNormal];
[replyBtn setTitleEdgeInsets:UIEdgeInsetsMake(5,-10, 5, 5)];
[replyBtn setImage:[UIImage imageNamed:@"news"] forState:UIControlStateNormal];
[replyBtn setImageEdgeInsets:UIEdgeInsetsMake(6, 5, 6,41)];
[replyBtn addTarget:self action:@selector(clickReplyBtn) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:replyBtn];
}
效果如下 :
- 上图下字
/**
* 设置上图下文字
*/
-(void)event_setTopImgBottomTitle
{
UIButton *replyBtn = [UIButton buttonWithType:UIButtonTypeCustom];
replyBtn.frame = CGRectMake(100, 300, 200, 49);
replyBtn.backgroundColor = [UIColor whiteColor];
NSString *text = @"个人" ;
UIImage *image = [UIImage imageNamed:@"me-click"] ;
CGFloat imageWidth = image.size.width;
CGRect textRect = [text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:FONT_S_12} context:nil];
CGFloat textWidth = roundf(textRect.size.width) ;
replyBtn.titleLabel.font = [UIFont systemFontOfSize:12.0f];
[replyBtn setTitle:text forState:UIControlStateNormal];
[replyBtn setImage:image forState:UIControlStateNormal];
[replyBtn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[replyBtn setTitleEdgeInsets:UIEdgeInsetsMake(35, 0, 0, imageWidth)];
[replyBtn setImageEdgeInsets:UIEdgeInsetsMake(-10 , textWidth ,0, 0)];
[self.view addSubview:replyBtn];
}
效果如下 :
走人,下次继续 ~
今天苹果发布了SE,看着不错呦 ~
期待6月份的WWDC大会 !