2015-09-03 4 views
15

Существует множество тем, связанных с выравниванием изображения кнопки в соответствии с текстом заголовка, но я не могу найти ничего о том, как просто выравнивать изображение с правой стороны кнопки.Выровнять изображение кнопки на правый край UIButton

Это не имеет никакого эффекта:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 50); 

Как можно правая кнопка выравнивать изображение кнопки? Можно ли это сделать в Раскадке?

+0

Возможный дубликат [iPhone UIButton - позиция изображения] (http://stackoverflow.com/questions/2515998/iphone-uibutton-image-position) – Fonix

+0

, если вы ориентируетесь на iOS 9, вы можете [сделать это так] (http://stackoverflow.com/a/32014907/1219956) – Fonix

+0

Это не дубликат. Мне не нужен текст заголовка. Я просто хочу, чтобы изображение было правильно выровнено по отношению к кадру кнопки. – soleil

ответ

15

Раскадровка:

Атрибуты Tab> Убедитесь Содержание вкладка Край выбран для 'образа':

1

Затем вы изменяете свойство 'Left' не права, что и вы делаете программно. Таким образом, другими словами, ваши простыни n слева

UIEdgeInsetsMake = TOP | ЛЕВЫЙ | НОМЕР | RIGHT

Программным:

button.imageEdgeInsets = UIEdgeInsetsMake(0, 100, 0, 0); 

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

+0

Спасибо за предложение. Это отделяет изображение слева. Другими словами, при всех 4 значениях в 0 изображение выравнивается по левому краю. Если я увеличиваю значение «влево», изображение удаляется от левого края. Это не помогает, потому что мне нужно изображение, прикрепленное к правому краю, так что, независимо от того, насколько широка кнопка растягивается, он остается выровненным по правому краю. – soleil

+0

@soleil правый. Насколько я знаю, это невозможно с помощью кнопки системы, но что я знаю на самом деле. Я просто использовал это, потому что это то, что вы дали в качестве примера, как то, что вы пробовали. Вы правы, а не подходящим обходным путем для различной ширины, но отлично подходят для статической ширины. – soulshined

+0

Ну на самом деле. @soleil просто сделайте левую вставку 'self.button.frame.size.width - widthOfImage' или что-то в этом роде. – soulshined

34

Семантический: Force Справа налево на View работает для меня enter image description here

+3

UISemanticContentAttribute начать с iOS 9.0 –

+0

Спасибо, человек !! Работаю как прелесть для меня !! –

7

Я нашел хитрый способ Обновлять Препятствия для UIImageView Баттона

попробовать этот

button.imageView?.trailingAnchor.constraint(equalTo: button.trailingAnchor, constant: -8.0).isActive = true 
button.imageView?.centerYAnchor.constraint(equalTo: button.centerYAnchor, constant: 0.0).isActive = true 

, но не забудьте добавить это сделать сдерживает эффективные

button.translatesAutoresizingMaskIntoConstraints = false 
button.imageView?.translatesAutoresizingMaskIntoConstraints = false 
+0

EZ. Благодарю. Пробовал проверить, имеет ли изображениеView UIButton уже ограничения, но не нашел его. Это последний вариант, если вы хотите, чтобы ваш ImageView держался на определенной стороне вашей кнопки, не завися от названия. – Glenn

+0

Хорошая идея simon – Marios

2

сделать это как по умолчанию семантический т.е. неопределенные или силы слева направо

и в button.imageEdgeInsets установить его как

UIEdgeInsets (вверху: 0, слева: self.view.fra me.size.width - (размер изображения + пространство выравнивания), внизу: 0, справа: 0)

это гарантирует, что независимо от размера представления он всегда выравнивает изображение с правой стороны кнопки

+0

* сила справа налево и пространство выравнивания i означало, что некоторые константы говорят 10.0, поэтому он не будет обниматься в левом углу обзора – Tharzeez

+0

Приятный и простой. – mehdok

5

Чистый способ сделать это в Swift

button.semanticContentAttribute = .forceRightToLeft 

Надеется, что это помогает

0

Есть несколько различных вариантов, чтобы сделать это.

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

button.semanticContentAttribute = .forceRightToLeft 

Вы можете установить семантический атрибут из интерфейса (раскадровка) раскладки также.

enter image description here


или Использование UIView, содержащий UIButton и UIImage, как показано на этом снимке.

  • Установить изображение правой стороны в UIView и отключить взаимодействие с пользователем, поэтому действие пользователя/крана будет передано на кнопку.
  • Добавить кнопку с размером, аналогичным UIView, в UIView, с прозрачным цветом фона и покрытием.
  • Установить смещение содержимого для кнопки, как показано в этом снимке.

enter image description here

Это позволит легко обрабатывать кнопки действия, свойства и настроить положение изображения & размер согласно вашему требованию. Попробуй это.

Смежные вопросы