向UIButton添加左右填充

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向UIButton添加左右填充相关的知识,希望对你有一定的参考价值。

我想向按钮添加一些左右填充,我看到它们具有titleEdgeInsets属性。这是我的代码:

import UIKit

class QuickPromptButton: UIButton {

    var userFacingValue: String?
    var answerValue: String?

    override init(frame: CGRect) {
        super.init(frame: frame)
        layer.borderColor = UIColor.primaryColor.cgColor
        layer.borderWidth = 1
        layer.cornerRadius = 15
        setTitleColor(.primaryColor, for: .normal)
        titleEdgeInsets = .init(top: 0, left: -10, bottom: 0, right: 10)
        contentVerticalAlignment = .center
        contentHorizontalAlignment = .center

    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

但是,这就是他们现在的样子:

enter image description here

问题是文本超出边界。知道为什么吗?

这就是我在左右两边都使用10:

enter image description here

答案
override var intrinsicContentSize: CGSize {
    let originalSize = super.intrinsicContentSize
    let size = CGSize(width: originalSize.width + 20, height: originalSize.height)
    return size
}

覆盖intrinsicContentSize并在当前宽度的顶部添加总填充最终对我有用,尽管不确定这是否是正确的方法。

以上是关于向UIButton添加左右填充的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 内的奇怪填充

UIButton里面有奇怪的填充物

向uibutton添加声音

在按钮中的文本两侧添加填充

如何向 UIButton 添加多行文本?

在 Swift 中以编程方式更改 UIButton 的文本(填充)