如何在iPhone中的按钮中使用UIEdgeInsets属性

22

我是iOS应用程序开发的新手,想了解如何在按钮中使用UIEdgeInsets属性,请指导我。

3个回答

79
UIButton有三个类型为UIEdgeInsets的属性 - contentEdgeInsets、titleEdgeInsets和imageEdgeInsets。您可以使用这些属性为所有按钮内容分配特定的插入,包括标题和图像,或者单独为其中一个分配。
您可以使用UIEdgeInsetsMake()函数创建UIEdgeInsets值。UIEdgeInsets封装了四个不同的CGFloat值,分别用于单独设置顶部、左侧、底部和右侧的插入值。正插入值会缩小内容区域,而负插入值则会有效地增加它。
如果您对如何在UIButton中使用UIEdgeInsets有更具体的问题,我建议您重新思考如何提问并再试一次。 :)
编辑(回答评论中的问题): 听起来您可能想要执行以下操作:
UIEdgeInsets titleInsets = UIEdgeInsetsMake(0.0, 7.0, 0.0, 0.0);
button.titleEdgeInsets = titleInsets;

我有一个按钮,即使我设置了对齐属性为左对齐,我希望该按钮的标题仍然保留7到9个字符的左侧空间。 - Ankit
10
它是顶部、左侧、底部和右侧:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIKitDataTypesReference/Reference/reference.html - kevboh
1
你可以使用我制作的非常简单的应用程序进行尝试 https://github.com/tomas789/UIButtonEdgeInsets - tomas789

3
如果您想要一个简单易用的按钮扩展,请使用以下代码:

button.setInset(top: 0.0, left: 7.0, bottom: 0.0, right: 0.0)

该代码可为按钮设置内边距,使其更加美观。请注意,保留原有的HTML标签。
extension UIButton {
    /**
        Creates an edge inset for a button
        :param: top CGFLoat
        :param: left CGFLoat
        :param: bottom CGFLoat
        :param: right CGFLoat
    */
    func setInset(#top: CGFloat, left: CGFloat, bottom: CGFloat, right: CGFloat) {
           self.titleEdgeInsets =  UIEdgeInsetsMake(top, left, bottom, right)
    }
}

0
请注意,有时您不需要设置contentEdgeInsets。只需给按钮更大的高度和宽度约束即可。标题本身将自动居中。

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