调整 titleEdgeInsets 和 imageEdgeInsets 时 UIButton 上的 title 和 text 之间的间距不正确

Posted

技术标签:

【中文标题】调整 titleEdgeInsets 和 imageEdgeInsets 时 UIButton 上的 title 和 text 之间的间距不正确【英文标题】:The space between title and text on UIButton is not correct when adjusting titleEdgeInsets and imageEdgeInsets 【发布时间】:2019-09-17 02:53:19 【问题描述】:

我想调整UIButton上文字和图片的间距,

let space = 10
button.contentHorizontalAlignment = .left
button.titleEdgeInsets = UIEdgeInsets(top: 0, left: space, bottom: 0, right: 0)

看起来不错,图中的空间绝对是10。

现在,我希望他们居中,

let space = 10
button.contentHorizontalAlignment = .center
button.titleEdgeInsets = UIEdgeInsets(top: 0, left: space, bottom: 0, right: 0)

看起来小了很多,空间只有5个。我从Reveal找的。​​p>

为什么空间减少了一半?

我搜索了,this 告诉我如何将标题和图像中心作为一个实体。它会像这样调整它们的空间:

CGFloat spacing = 10; // the amount of spacing to appear between image and title
tabBtn.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, spacing);
tabBtn.titleEdgeInsets = UIEdgeInsetsMake(0, spacing, 0, 0);

是的,它确实运作良好,但为什么呢?从字母上看,空格应该是20吧?

Here 是一个例子,有帮助吗?

提前致谢。

【问题讨论】:

【参考方案1】:

你没有这样设置imageEdgeInsets

rightButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 10)

所以总代码在这里:

leftButton.contentHorizontalAlignment = .left
        leftButton.imageView?.backgroundColor = .red
        leftButton.titleLabel?.backgroundColor = .gray
        leftButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0)

        rightButton.contentHorizontalAlignment = .center
        rightButton.imageView?.backgroundColor = .red
        rightButton.titleLabel?.backgroundColor = .gray
        rightButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 10)
        rightButton.titleEdgeInsets = UIEdgeInsets(top: 0, left: 10, bottom: 0, right: 0)

原因: 实际上,您需要同时设置imageEdgeInsets 左对齐或居中对齐 但是当它的左对齐图像时,右侧没有空间可以设置Insets。

查看此代码:

leftButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 100)

这里也没有空格。

所以回家你就会知道插图是如何工作的:

为您提供更多帮助:

Click here

【讨论】:

以上是关于调整 titleEdgeInsets 和 imageEdgeInsets 时 UIButton 上的 title 和 text 之间的间距不正确的主要内容,如果未能解决你的问题,请参考以下文章

UIButton titleEdgeInsets [重复]

将 UIButton 上标题右侧的图像与 imageEdgeInsets 和 titleEdgeInsets 对齐

自动布局 - UIButton 的固有大小不包括标题插图

布局包含Image和Title的UIButton

关于titleEdgeInsets的使用

UIKit学习之UIButton篇