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

有时候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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值