我想要一个带有图像和标题的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))];
我在这里遗失或误用了什么吗?
提前致谢,亲切的问候 - 朱利安
答案 0 :(得分:1)
按钮在管理标签和图像子视图方面可能会有点痛苦 - 它并没有给你太多控制权。这是因为只要按钮状态发生变化(甚至更频繁),它们就会更新这些值,因此如果您手动设置参数,则设置会丢失。这就是您需要使用setTitleEdgeInsets:
等方法的原因 - 您正走在正确的轨道上。 :)
需要注意的事项:
myButton.center
的使用可能不正确。这将是您父视图中按钮的中心,您可能希望在这里使用按钮大小的一半。titleLabel
的框架/边界。您可以拨打按钮上的layoutSubviews
和/或标签上的sizeToFit
。但是,您真的受UIButton
的不透明实现细节的支配,因此最好计算您认为文本/标签大小的内容(使用sizeWithFont:*
方法之一NSString
)并设置顶部和左侧边缘插入以定位文本。