如何在以编程方式创建的UIButton上添加padding-left?

时间:2012-05-14 18:40:43

标签: swift xcode uibutton padding imageedgeinsets

我在UIButton上添加左侧填充时遇到问题。我有UIButton UIControlContentHorizontalAlignmentLeft。我希望文本显示在左侧,但它太左了。当我给边框时,它看起来不太好。我想在CSS中给出一些关于5px的文本填充。我搜索了解决方案,但找不到特别针对UIButton的解决方案。 在此先感谢您的帮助。

6 个答案:

答案 0 :(得分:104)

  

titleEdgeInsets 。边缘的插入或开始边距   按钮标题绘制矩形。

     

@property(非原子)UIEdgeInsets titleEdgeInsets

     

讨论使用此功能   要调整大小和重新定位有效绘图矩形的属性   按钮标题。您可以为每个指定不同的值   四个插图(上,左,下,右)。正值收缩,或   插入边缘,使其更接近按钮的中心。一个   负值扩大或偏离该边缘。使用   UIEdgeInsetsMake函数为此属性构造值。该   默认值为UIEdgeInsetsZero。

     

可用性适用于iOS 2.0及更高版本。

     

在UIButton.h中声明

试一试:)

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 5.0, 0.0, 0.0)];

此外,如果您使用自定义按钮,则会出现内容插入和图像插入等内容。

如果你在这里寻找斯威夫特。这是有效的Swift 3.0

myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 0.0)

您也可以直接设置它。如果想要使用一个或两个属性,这将非常有用。

myButton.titleEdgeInsets.top = 0
myButton.titleEdgeInsets.left = 5
myButton.titleEdgeInsets.bottom = 0
myButton.titleEdgeInsets.right = 0

答案 1 :(得分:26)

在Xcode 6中,您可以在IB中指定标题插入:

Interface builder edge title inset

答案 2 :(得分:22)

发布Xcode 8如果要通过界面构建​​器(IB)将其设置为这些插入,您将在尺寸检查器而不是属性检查器中找到这些插入设置。

希望这有帮助。

enter image description here

答案 3 :(得分:21)

这是一个更好的答案:

  • 避免截断按钮标题
  • 避免标题超出范围 按钮的视图
  • 使按钮框架与图像一起正常工作。

代码:

extension UIButton {
    func addLeftPadding(_ padding: CGFloat) {
        titleEdgeInsets = UIEdgeInsets(top: 0.0, left: padding, bottom: 0.0, right: -padding)
        contentEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: padding)
    }
}

用法:

myButton.addLeftPadding(10)

答案 4 :(得分:7)

以下是另一个解决此问题的示例:

 [self.myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    float padding_button                = 6.0f;
    UIEdgeInsets titleInsets            = UIEdgeInsetsMake(0.0f, padding_button, 0.0f, -padding_button);
    UIEdgeInsets contentInsets          = UIEdgeInsetsMake(padding_button, 0.0f, padding_button, 0.0f);
    CGFloat extraWidthRequiredForTitle  = titleInsets.left - titleInsets.right;
    contentInsets.right += extraWidthRequiredForTitle;
    [self.myButton setTitleEdgeInsets:titleInsets];
    [self.myButton setContentEdgeInsets:contentInsets];
    [self.myButton sizeToFit];

此外,如果您的按钮有图像,您只需添加:

[self.myButton setImage:[UIImage imageNamed:@"YourImage.png"] forState:UIControlStateNormal];
祝你好运!

答案 5 :(得分:3)

_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
_myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);