如何在使用自动布局时更改默认UIButton填充?

18

在iOS 6中使用自动布局(auto-layout)时,UIButton的内在内容大小似乎包括按钮文本周围约10像素的填充。是否有任何方法可以控制此填充值?例如,我想能够像这样做,将填充设置为每侧5像素:

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

我已经尝试过设置contentEdgeInsets、titleEdgeInsets和imageEdgeInsets,但都没有效果。奇怪的是,在contentEdgeInsets中指定负左或右值似乎有一些效果,但上或下没有。

无论如何,我希望能够指定实际的填充值作为正数,而不是作为负数来调整默认值。有人知道这是否可能吗?

2个回答

13

我意识到我在两年前发布了这个问题,但是我想跟进一下并指出,contentEdgeInsets属性现在似乎可以与自动布局正常工作。例如,以下代码会产生一个带有20像素边距的按钮:

button.contentEdgeInsets = UIEdgeInsetsMake(20, 20, 20, 20);

1
对于阅读此内容的任何人,请注意您必须设置内容插图,而不是标题插图。 - RunLoop

4

我不确定您是否可以在不子类化UIButton的情况下完成此操作。如果您愿意进行子类化,覆盖此方法可能会解决问题(我还没有尝试过):

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接