18

在 iOS 6 中使用自动布局时,UIButton 的固有内容大小似乎包括按钮文本周围大约 10 像素的填充。有没有办法控制这个填充值?例如,我希望能够做这样的事情,这会将填充设置为每边 5px:

[button setPadding:UIEdgeInsetsMake(5, 5, 5, 5)];

我尝试设置 contentEdgeInsets、titleEdgeInsets 和 imageEdgeInsets,但均无济于事。奇怪的是,在 contentEdgeInsets 中指定负左值或右值似乎有一些效果,但不是顶部或底部。

无论哪种方式,我都希望能够将实际填充值指定为正数,而不是对表示为负数的默认值进行调整。有谁知道这是否可能?

4

2 回答 2

12

我意识到我在两年多前发布了这个问题,但我想跟进并注意到该contentEdgeInsets属性现在似乎与自动布局一起正常工作。例如,以下代码生成一个按钮,其内容周围有 20 像素的边距:

button.contentEdgeInsets = UIEdgeInsetsMake(20, 20, 20, 20);
于 2015-09-30T13:39:11.350 回答
3

我不确定你是否可以在不继承 UIButton 的情况下做到这一点。如果您愿意子类化,覆盖此方法可能会成功(我没有尝试过):

- (UIEdgeInsets)alignmentRectInsets { return UIEdgeInsetsMake(5, 5, 5, 5); }

于 2013-06-29T05:32:14.887 回答