UIButton - 设置图片及文字、文字左对齐

来源:互联网 发布:苹果手机4g网络被劫持 编辑:程序博客网 时间:2024/04/29 20:34

有时候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大会 !

1 0
原创粉丝点击