Как добавить оставленный дополнению на UIButton, созданном программно?

Я испытываю затруднения при добавлении оставленный дополнение на a UIButton. У меня есть a UIButton с UIControlContentHorizontalAlignmentLeft. Я хочу, чтобы текст был отображен на левой стороне, но это слишком оставляют. когда я даю границу, это не выглядит хорошим. Я хотел бы дать некоторое дополнение на тексте приблизительно 5 пкс как в CSS. Я погуглил для решения, но не могу найти то особенно для UIButton. Заранее спасибо за справку.

62
задан 29 March 2017 в 18:03

6 ответов

titleEdgeInsets вставка или поля начала для краев заголовка кнопки, тянущего прямоугольник.

@property (неатомарное) обсуждение UIEdgeInsets titleEdgeInsets

Использование это свойство, чтобы изменить размер и изменить местоположение эффективного прямоугольника рисунка для заголовка кнопки. Можно указать другое значение для каждой из четырех вставок (вершина, оставленная, нижняя часть, право). Положительное значение уменьшается, или вставки, это edge— двигать поближе его к центру кнопки. Отрицательная величина расширяется, или начала, тот край. Используйте функцию UIEdgeInsetsMake для построения значения для этого свойства. Значением по умолчанию является UIEdgeInsetsZero.

Доступность Доступный в iOS 2.0 и позже.

Заявленный В UIButton.h

Дают этому попытку :)

[myButton setTitleEdgeInsets:UIEdgeInsetsMake(0.0, 5.0, 0.0, 0.0)];

Также, если Вы используете пользовательскую кнопку существует такая вещь как Довольный Вставки Изображения и Вставки.

Упаковывают, Вы сделали это сюда поиском Swift. Это - допустимый Swift 3.0 😃

myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: 5.0, bottom: 0.0, right: 0.0)

, можно установить его непосредственно также. Полезно, если хотят использовать одно или два свойства.

myButton.titleEdgeInsets.top = 0
myButton.titleEdgeInsets.left = 5
myButton.titleEdgeInsets.bottom = 0
myButton.titleEdgeInsets.right = 0
118
ответ дан 31 October 2019 в 13:10

В Xcode 6 можно указать вставку заголовка в IB:

Interface builder edge title inset

26
ответ дан 31 October 2019 в 13:10

Xcode 8 сообщения, если Вы хотите установить его эти вставки через интерфейсного разработчика (IB), Вы найдете эти настройки вставки в инспекторе размера вместо инспектора атрибута.

Hope это помогает.

enter image description here

23
ответ дан 31 October 2019 в 13:10

Вот лучший ответ на:

  • стараются не усекать заголовок
  • кнопки, избегают, чтобы заголовок от расширения вне представления кнопки
  • сделал основу кнопки хорошо с изображением.

Код:

extension UIButton {
    func addLeftPadding(_ padding: CGFloat) {
        titleEdgeInsets = UIEdgeInsets(top: 0.0, left: padding, bottom: 0.0, right: -padding)
        contentEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: padding)
    }
}

Использование:

myButton.addLeftPadding(10)
21
ответ дан 31 October 2019 в 13:10

Вот другой пример, как разрешить это:

 [self.myButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    float padding_button                = 6.0f;
    UIEdgeInsets titleInsets            = UIEdgeInsetsMake(0.0f, padding_button, 0.0f, -padding_button);
    UIEdgeInsets contentInsets          = UIEdgeInsetsMake(padding_button, 0.0f, padding_button, 0.0f);
    CGFloat extraWidthRequiredForTitle  = titleInsets.left - titleInsets.right;
    contentInsets.right += extraWidthRequiredForTitle;
    [self.myButton setTitleEdgeInsets:titleInsets];
    [self.myButton setContentEdgeInsets:contentInsets];
    [self.myButton sizeToFit];

Также, если Ваша кнопка имеет изображение, можно просто добавить:

[self.myButton setImage:[UIImage imageNamed:@"YourImage.png"] forState:UIControlStateNormal];

Удачи!

7
ответ дан 31 October 2019 в 13:10
_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
_myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
3
ответ дан 31 October 2019 в 13:10

Другие вопросы по тегам:

Похожие вопросы: