UIButton: Центр текста в контейнере и левое изображение в сторону - PullRequest
0 голосов
/ 10 октября 2019

Я хочу, чтобы мои UIButton центрировали текст, а затем, основываясь на этом, поместите изображение слева от него.

Пока у меня есть этот пример (изображение ниже), но текст не центрирован (проверьте красную линию). Кроме того, синий фон предназначен для отображения общей ширины этой кнопки.

enter image description here

Как этого добиться?

1 Ответ

1 голос
/ 10 октября 2019

Это на самом деле довольно просто. Просто добавьте ширину изображения к кнопке 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).

result

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...