Подтвердить что ты не робот

Измените текст UIButton (дополнение) программно в Swift

Продолжение обучения Swift и не знаю Objective-C. Я видел, что для изменения текста кнопки программным образом требуется использование titleEdgeInsets, но я не уверен, как его использовать.

Я хотел бы изменить текст в кнопке (padding) внизу и как влево, так и вправо.

Спасибо за любые ответы и/или примеры!

4b9b3361

Ответ 1

Все еще действует для: iOS 12/Xcode 10/Swift 4.2/OSX 10.13.2


iOS 9.1/Xcode 7.1/Swift 2.1/OSX 10.10.5:

Метод titleEdgeInsets не работал для меня. Моя рамка кнопки плотно прижимает текст (я не указал размер рамки), а рамка имеет красный цвет фона. После выполнения:

 myButton.titleEdgeInsets = UIEdgeInsetsMake(10,10,10,10)

красный фон сжимался внутрь на 10 пикселей с каждой стороны, что означало, что теперь часть текста была за пределами красного фона. Использование отрицательных значений не влияло на исходный размер кадра.

Мне удалось обойти текст, эффективно увеличив размер рамки, выполнив:

myButton.contentEdgeInsets = UIEdgeInsetsMake(5,5,5,5) 

Ответ 2

iOS 10 и пример Swift 3

Протестировано и работает на IOS 11 и Swift 4.

refineButton.contentEdgeInsets = UIEdgeInsets(top: 5, left: 0, bottom: 0, right: 0)

Ответ 3

Вы можете добавлять отступы сверху, слева, справа и внизу, делая эти строки кода.

button.titleEdgeInsets.left = 10; // add left padding.
button.titleEdgeInsets.right = 10; // add right padding.
button.titleEdgeInsets.top = 10; // add top padding.
button.titleEdgeInsets.bottom = 10; // add bottom padding.

Ответ 4

Вы также можете сделать это в раскадровке:
enter image description here

Ответ 5

Для iOS 9.1/Xcode 7.1/Swift 2.1

@IBOutlet weak var ratingButton: UIButton!

override func viewDidLoad() {
    ratingButton.contentEdgeInsets = UIEdgeInsets(top:15,right:10,bottom:15,left:10)

    super.viewDidLoad()
}