我在UIButton
上添加左侧填充时遇到问题。我有UIButton
UIControlContentHorizontalAlignmentLeft
。我希望文本显示在左侧,但它太左了。当我给边框时,它看起来不太好。我想在CSS中给出一些关于5px的文本填充。我搜索了解决方案,但找不到特别针对UIButton
的解决方案。
在此先感谢您的帮助。
答案 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中指定标题插入:
答案 2 :(得分:22)
答案 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);