it-roy-ru.com

Выровнять изображение кнопки по правому краю UIButton

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

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

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

Как можно по правому краю изображения для кнопки? Это можно сделать в раскадровке?

21
soleil

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

43
Gilad Brunfman

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

Вкладка «Атрибуты»> Убедитесь, что на вкладке «Границы контента» выбрано «Изображение»:

 1

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

UIEdgeInsetsMake = TOP | ВЛЕВО | Дно | ПРАВО

Программно: 

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

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

17
soulshined

Я нашел хитрый способ Обновить ограничения для 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
14
Simon K. Gerges

Есть несколько вариантов сделать это.

Использовать semanticContentAttribute

button.semanticContentAttribute = .forceRightToLeft

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

 enter image description here


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

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

 enter image description here

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

9
Krunal

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

button.semanticContentAttribute = .forceRightToLeft

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

9
Md. Ibrahim Hassan

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

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

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

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

4
Tharzeez

Простой способ

Используя расширение, чтобы установить изображение на правой стороне с пользовательским смещением

   extension UIButton {
    func addRightImage(image: UIImage, offset: CGFloat) {
        self.setImage(image, for: .normal)
        self.imageView?.translatesAutoresizingMaskIntoConstraints = false
        self.imageView?.centerYAnchor.constraint(equalTo: self.centerYAnchor, constant: 0.0).isActive = true
        self.imageView?.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -offset).isActive = true
    }
}
1
Musa almatri

Именно так:

btn.imageView?.translatesAutoresizingMaskIntoConstraints = false
btn.imageView?.centerYAnchor.constraint(equalTo: btn.centerYAnchor, constant: 0.0).isActive = true
btn.imageView?.trailingAnchor.constraint(equalTo: btn.trailingAnchor, constant: 0.0).isActive = true
btn.imageView?.contentMode = .right
0
Charly berthet