71

我在UIButton. 我有一个UIButton. UIControlContentHorizontalAlignmentLeft我希望文本显示在左侧,但它太左了。当我给边界时,它看起来并不好。我想像在 CSS 中一样在大约 5px 的文本上添加一些填充。我用谷歌搜索了解决方案,但找不到一个特别适用于UIButton. 提前感谢您的帮助。

4

6 回答 6

131

titleEdgeInsets按钮标题绘图矩形边缘的内边距或外边距。

@property(nonatomic) UIEdgeInsets titleEdgeInsets

讨论使用此属性来调整按钮标题的有效绘图矩形的大小和重新定位。您可以为四个插图(上、左、下、右)中的每一个指定不同的值。正值会缩小或插入该边缘 - 将其移近按钮的中心。负值扩展或开始该边缘。使用 UIEdgeInsetsMake 函数为此属性构造一个值。默认值为 UIEdgeInsetsZero。

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

在 UIButton.h 中声明

试试这个:)

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

此外,如果您使用的是自定义按钮,则有诸如 Content Insets 和 Image Insets 之类的东西。

以防你在这里寻找 Swift。这是有效的 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
于 2012-05-14T18:45:35.457 回答
30

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

希望这可以帮助。

在此处输入图像描述

于 2017-01-05T10:03:56.007 回答
29

这是一个更好的答案:

  • 避免截断按钮标题
  • 避免标题超出按钮的视图
  • 使按钮框架与图像配合良好。

代码:

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)
于 2015-05-08T20:00:54.950 回答
27

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

界面生成器边缘标题插图

于 2015-02-04T02:05:29.510 回答
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];

祝你好运!

于 2014-06-01T14:20:21.660 回答
4
_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
_myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
于 2016-05-11T09:06:32.563 回答