swift 如何在编程创建的UIButton上添加左填充?

koaltpgm  于 2022-12-26  发布在  Swift
关注(0)|答案(6)|浏览(180)

我在UIButton上添加左填充时遇到了麻烦。我有一个UIButtonUIControlContentHorizontalAlignmentLeft。我希望文本显示在左侧,但它太左了。当我给予边框时,它看起来不太好。我想在文本上添加一些像CSS中的5px左右的填充。我在谷歌上搜索了解决方案,但没有找到一个特别适合UIButton的。

jyztefdp

jyztefdp1#

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

@属性(非原子)UI边缘插入标题边缘插入

讨论使用此属性可调整按钮标题的有效绘图矩形的大小和位置。您可以为四个插图中的每个指定不同的值(上、左、下、右)。正值会缩小或插入该边缘,使其更靠近按钮的中心。负值会扩大或突出该边缘,使用UIEdgeInsetsMake函数构造此属性的值。默认值为UIEdgeInsetsZero。
可用性在iOS 2.0及更高版本中可用。

在UIButton. h中声明
给予这个:)

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

此外,如果您使用的是自定义按钮,则会有内容插入和图像插入等功能。
如果你已经在这里寻找斯威夫特。这是有效的斯威夫特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
bybem2ql

bybem2ql2#

Post Xcode 8如果你想通过界面生成器(IB)设置这些插入,你会在尺寸检查器而不是属性检查器中找到这些插入设置。
希望这个有用。

wvt8vs2t

wvt8vs2t3#

下面是一个更好的答案:

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

代码:

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)
z8dt9xmd

z8dt9xmd4#

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

gdx19jrr

gdx19jrr5#

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

[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];

祝你好运!

pieyvz9o

pieyvz9o6#

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

相关问题