标题和图像居中的 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的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSS 居中和裁剪图像

如何让我的导航栏完美居中,徽标/图像居中在顶部

如何自动裁剪和居中图像

在导航栏中使用标题标签居中图像

使用 Markdown,如何将图像及其标题居中?

CSS使div中的任何图像居中