设置UIButton的image title 位置

UIButton 的image title 的位置都是可以调整的,具体如何调整可以按照下面的步骤

1、设置内容的水平垂直位置

    self.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
    self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

self指的是UIButton对象,这是继承自UIButon的方法里面或者给UIButton添加扩展方法里面。
通过这样的设置可以使得imageView显示在UIButton对象的左上角,titleLabel显示在imageView的右边

2、调整imageView居中

    CGFloat btn_width = self.frame.size.width;
    self.imageEdgeInsets = UIEdgeInsetsMake(10, (btn_width - self.imageView.frame.size.width)/2, 0, 0);

3、调整 titleLabel居中

    CGFloat btn_width = self.frame.size.width;
    self.titleEdgeInsets = UIEdgeInsetsMake(self.imageView.frame.size.height + vSpace+10, - self.imageView.frame.size.width+(btn_width/2-self.titleLabel.frame.size.width/2), 0, 0);

通过减去 imageView的宽度使titleLabel处在左上角,让后将label移植中心。
经过以上三步就可以使imageView 、titleLabelLabel 居中,其它的显示形式一样可以参照以上的设置。

博主将其整理成了方法,就不需要每次都写了

- (void) setImageAndTitleCenterWithVerticalGapSpace:(CGFloat) vSpace imageTopSpace:(CGFloat) iSpace {

    self.contentVerticalAlignment = UIControlContentVerticalAlignmentTop;
    self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

    CGFloat btn_width = self.frame.size.width;
    CGFloat iTop = iSpace;
    self.imageEdgeInsets = UIEdgeInsetsMake(iTop, (btn_width - self.imageView.frame.size.width)/2, 0, 0);
//    self.titleEdgeInsets = UIEdgeInsetsMake(self.imageView.frame.size.height + vSpace+iTop, - self.imageView.frame.size.width+(btn_width/2-self.titleLabel.frame.size.width/2), 0, 0);
// 使用中发现对于label的width取值不准确,遂通过计算一次获取,准确
    CGSize size = [self.titleLabel sizeThatFits:CGSizeMake(CGRectGetWidth(self.frame), CGRectGetHeight(self.frame))];
    self.titleEdgeInsets = UIEdgeInsetsMake(CGRectGetHeight(self.imageView.frame)+ vSpace + iTop, - CGRectGetWidth(self.imageView.frame) + (CGRectGetWidth(self.frame) - size.width)/2, 0, 0);
}

vSpace imageView与titleLabel垂直间隔
iSpace imageView 距离 top的间隔

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值