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

Mis*_*ack 63 xcode padding uibutton swift imageedgeinsets

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

Rya*_*los 119

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

@property(非原子)UIEdgeInsets titleEdgeInsets

讨论使用此属性可以调整按钮标题的有效绘图矩形并重新定位.您可以为四个插图(顶部,左侧,底部,右侧)中的每一个指定不同的值.正值会缩小或缩小,使其靠近按钮的中心.负值会扩展或偏离该边缘.使用UIEdgeInsetsMake函数为此属性构造值.默认值为UIEdgeInsetsZero.

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

在UIButton.h中声明

试一试:)

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 5.0, 0.0, 0.0)];
Run Code Online (Sandbox Code Playgroud)

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

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

myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 0.0)
Run Code Online (Sandbox Code Playgroud)

您也可以直接设置它.如果要使用一个或两个属性,这将很有帮助.

myButton.titleEdgeInsets.top = 0
myButton.titleEdgeInsets.left = 5
myButton.titleEdgeInsets.bottom = 0
myButton.titleEdgeInsets.right = 0
Run Code Online (Sandbox Code Playgroud)

  • Swift 2.0:`myButton.titleEdgeInsets = UIEdgeInsets(top:0,left:5.0,bottom:0,right:0) (2认同)

Ser*_*nko 26

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

界面构建器边标题插入

  • 这是一个好点,但我发现使用上下文插入是要走的路. (2认同)

Vai*_*hav 24

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

希望这可以帮助.

在此输入图像描述


Luc*_*hwe 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)
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

myButton.addLeftPadding(10)
Run Code Online (Sandbox Code Playgroud)

  • 具有均匀边填充的Swift版本:`让sidePadding:CGFloat = 20.0 titleEdgeInsets = UIEdgeInsets(顶部:0.0,左:-sidePadding,底部:0.0,右:-sidePadding)contentEdgeInsets = UIEdgeInsets(顶部:0.0,左:sidePadding,底部: 0.0,右:sidePadding)` (4认同)

Ole*_*pov 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];
Run Code Online (Sandbox Code Playgroud)

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

[self.myButton setImage:[UIImage imageNamed:@"YourImage.png"] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)

祝好运!