【问题标题】:How to stop the background image of a UIButton from affecting its intrinsicContentSize?如何阻止 UIButton 的背景图像影响其内在内容大小?
【发布时间】:2025-12-10 14:10:01
【问题描述】:

我有一个大小为 1095x726 点的巨大图像。

我已将此图像设置为UIButton 的背景图像。这导致按钮的大小增加。我观察到按钮的intrinsicContentSize 等于背景图片的大小。

我希望按钮的大小不是由背景图像决定的。

按钮的大小应该就像没有背景图片一样。背景图像应调整为按钮的大小,而不是相反。

谁能指出如何使UIButtonintrinsicContentSize 不依赖于其背景图像?

【问题讨论】:

    标签: ios uibutton


    【解决方案1】:

    您是否为您的 UIButton 设置了任何约束?

    如果没有,您必须设置所有需要的约束(宽度、高度、控制器内的位置)。

    【讨论】:

    • 添加了约束来设置 UIButton 的位置。但是,尚未添加约束来设置 UIButton 的宽度和高度。如果没有设置按钮的宽度和高度,那么它将采用 UIButton 的 intrinsicContentSize 的宽度和高度。
    【解决方案2】:

    我继承了UIButton 并覆盖了intrinsicContentSize。它不能处理所有情况,但足以满足我的目的。

    class TitleFittingButton: UIButton {
        override var intrinsicContentSize: CGSize {
            var titleSize = titleLabel?.intrinsicContentSize ?? .zero
            titleSize.width += titleEdgeInsets.left + titleEdgeInsets.right
            titleSize.height += titleEdgeInsets.top + titleEdgeInsets.bottom
            return titleSize
        }
    }
    

    【讨论】: