标题和图像居中的 UIButton
Posted
技术标签:
【中文标题】标题和图像居中的 UIButton【英文标题】:UIButton with title and image centered 【发布时间】:2012-06-17 20:30:39 【问题描述】:我想要一个带有图像和标题的 UIButton。我使用-setTitleEdgeInsets
显示文本。
但我不想通过反复试验来获得正确的位置,因为按钮的标题应该是动态的。我尝试确定 UIButtons titleLabel 对象的大小和位置,并使用以下代码设置与其对应的 titleEdgeInsets:
[myButton setTitleEdgeInsets:UIEdgeInsetsMake(myButton.center.y - (myButton.titleLabel.bounds.size.height / 2),
- (myButton.center.x - (myButton.titleLabel.bounds.size.width / 2)),
myButton.center.y + (myButton.titleLabel.bounds.size.height / 2),
myButton.center.x + (myButton.titleLabel.bounds.size.width / 2))];
我在这里遗漏或误用了什么吗?
在此先感谢您-朱利安
【问题讨论】:
【参考方案1】:按钮在管理标签和图像子视图的方式上可能会有点麻烦——它不会给你太多控制权。这是因为它们会在按钮状态更改(甚至更频繁)时更新这些值,因此如果您手动设置了参数,您的设置就会丢失。这就是为什么您需要使用setTitleEdgeInsets:
之类的方法的原因——您走在正确的轨道上。 :)
注意事项:
您对myButton.center
的使用可能不正确。这将是您的按钮在其父视图中的中心,您可能希望在此处使用按钮大小的一半。
可能是这样的情况,当您的代码被调用时,按钮尚未完成其子视图布局,因此尚未为 titleLabel
设置框架/边界。
您可以在按钮上调用layoutSubviews
,和/或在标签上调用sizeToFit
。但是,您确实受制于 UIButton
的不透明实现细节,因此最好计算您认为的文本/标签大小(使用 NSString
中的 sizeWithFont:*
方法之一)并设置一个顶部和左侧边缘插入来定位文本。
【讨论】:
以上是关于标题和图像居中的 UIButton的主要内容,如果未能解决你的问题,请参考以下文章