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