UIButton:容器中的文本居中,图像左侧

Posted

技术标签:

【中文标题】UIButton:容器中的文本居中,图像左侧【英文标题】:UIButton: Center text in container and left image to the side 【发布时间】:2019-10-10 16:11:37 【问题描述】:

我希望我的UIButton 将文本居中,然后在此基础上将图像放置在其左侧。

到目前为止,我有这个例子(下图),但文本没有居中(检查红线)。此外,蓝色背景旨在显示此按钮的总宽度。

我怎样才能做到这一点?

【问题讨论】:

到目前为止你尝试过什么?你能展示你的代码吗? 老实说,我刚刚尝试了一些只使用标题和图片插图的扩展。此外,更改 XIB 文件中对齐和定位的一些设置。到目前为止没有成功。 【参考方案1】:

其实很简单。只需将图像的宽度添加到按钮的contentEdgeInsets.right

let t = "Text I want centered".uppercased()
let i = UIImage(named: "person.fill")

let button = UIButton(type: .system)
button.layer.borderWidth = 1
view.addSubview(button)

button.setTitle(t, for: .normal)
button.setImage(i, for: .normal)
button.contentEdgeInsets.right = i?.size.width ?? 0

button.sizeToFit()

print(button.frame.width) // prints "212.0"
print(button.titleLabel?.frame) // prints "(19.0, 1.0, 174.0, 18.0)"

print 语句显示 titleLabel 完全居中(因为 19.0 + 174.0 + 19.0 = 212.0)。

【讨论】:

以上是关于UIButton:容器中的文本居中,图像左侧的主要内容,如果未能解决你的问题,请参考以下文章

c_cpp UIButton类别用于垂直居中标题标签和图像。文本标签位于图像下方。

CSS:居中对齐文本,同时将容器的其他元素保持在左侧[重复]

UIButton ImageView 内容模式不起作用

标题和图像居中的 UIButton

居中图像,但保持在左侧 CSS

如何在 UIButton 中将 UIImageView 与它的文本居中?