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

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

Ответ 1

titleEdgeInsets Вставки или исходные поля для краев прямоугольник рисования заголовка кнопки.

@property (неатомный) UIEdgeInsets titleEdgeInsets

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

Доступность Доступна в iOS 2.0 и более поздних версиях.

Объявлено в UIButton.h

Попробуйте:)

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

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

Пойди, ты сделал это здесь, ища Свифта. Это действительный 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

Ответ 2

В Xcode 6 вы можете указать вставку в IB:

Interface builder edge title inset

Ответ 3

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

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

код:

  // Obj-C
  CGFloat padding = 10.0f;
  [myButton setTitleEdgeInsets:UIEdgeInsetsMake(0, padding, 0, -padding)];
  [myButton setContentEdgeInsets:UIEdgeInsetsMake(0, 0, 0, padding)];

  // Swift
  let padding: CGFloat = 10.0
  myButton.titleEdgeInsets = UIEdgeInsets(top: 0.0, left: padding, bottom: 0.0, right: -padding)
  myButton.contentEdgeInsets = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: padding)

Ответ 4

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

Надеюсь, что это поможет.

введите описание изображения здесь

Ответ 5

Вот еще один пример, как это решить:

 [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];

Удачи!

Ответ 6

_myButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
_myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);