Как добавить padding-left на UIButton, созданный программно?



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

661   6  

6 ответов:

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

@property (nonatomic) 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

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

Interface builder edge title inset

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

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

код:

  // 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)

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

надеюсь, что это помогает.

enter image description here

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

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

удачи!

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

Comments

    Ничего не найдено.