ios开发中UIButton设置标题和图片不能同时显示问题解决

新增: 最近发现如果使用UI给定的规范图片,尺寸适合的,使用这种方式就没有问题,如果是自己随意找的图片,当图片长度大于button长度时会导致titleLabel长宽异常,使用titleEdgeInsets 和 imageEdgeInsets 就会不准确

属性解析

UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right):

当button.imageView和button.titleLabel都存在时:

  • titleEdgeInsets : top、bottom、right是相对于button的上、下、右, left是相对于button.imageView的右
  • imageEdgeInsets:top、bottom、left是相对于button的上、下、左, right是相对于button.titleLabel的左

当图片尺寸合适时:

修改为图片在右,文字在左

CGFloat kImageViewW = button.imageView.bounds.size.width; 

CGFloat kTitleLabelW = button.titleLabel.bounds.size.width;

// 设置imageView的左边距离button的左边kTitleLabelW,因为imageView右边是相对于titleLabel的,所以右边距离button.titleLabel  为(-kTitleLabelW)

button.imageEdgeInsets = UIEdgeInsetsMake(0, kTitleLabelW, 0, -kTitleLabelW);

// 因为titleLabel的左边是相对于imageView的,所以设置titleLabel的左边距离button.imageView的右边 为(-kTitleLabelW),右边距离buttonk为 ImageViewW

button.titleEdgeInsets = UIEdgeInsetsMake(0, -kImageViewW, 0, kImageViewW);

补充 

最好先获取  imageView.bounds.size.width, 最近使用时发现无法达到效果,获取的titleLabel.bounds.size.width 不准确,调换顺序先获取 imageView.bounds.size.width 就解决了,具体原因未知...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值