UIButton:容器中的文本居中,左侧图像居中
UIButton: Center text in container and left image to the side
我希望我的 UIButton
将文本居中,然后在此基础上将图像放置在其左侧。
到目前为止,我有这个例子(下图),但文本没有居中(检查红线)。此外,蓝色背景旨在显示此按钮的总宽度。
我怎样才能做到这一点?
其实很简单。只需将图像的宽度添加到按钮的 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
将文本居中,然后在此基础上将图像放置在其左侧。
到目前为止,我有这个例子(下图),但文本没有居中(检查红线)。此外,蓝色背景旨在显示此按钮的总宽度。
我怎样才能做到这一点?
其实很简单。只需将图像的宽度添加到按钮的 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)。