У меня возникли проблемы с добавлением левой прокладки на UIButton
. У меня есть UIButton
с UIControlContentHorizontalAlignmentLeft
. Я хочу, чтобы текст отображался с левой стороны, но он слишком левый. когда я даю границу, это выглядит не очень хорошо. Я хотел бы дать некоторое дополнение к тексту о 5px, как в CSS. Я googled для решения, но не могу найти его особенно для UIButton
.
Заранее спасибо за помощь.
Как добавить прописку слева на 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:
Ответ 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);