Совместите изображение кнопки с правым краем UIButton

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

Это не влияет:

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

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

Ответ 1

Семантика: сила справа налево для просмотра работает для меня введите описание изображения здесь

Ответ 2

Раскадровка

Вкладка "Атрибуты" > Убедитесь, что вкладка "Контент контента" выбрана для "изображения":

1

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

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

Программно:

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

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

Ответ 3

Я нашел сложный способ Обновите ограничения для 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

Ответ 4

Для этого есть несколько вариантов.

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

button.semanticContentAttribute = .forceRightToLeft

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

enter image description here


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

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

enter image description here

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

Ответ 5

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

button.semanticContentAttribute = .forceRightToLeft

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

Ответ 6

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

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

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

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

Ответ 7

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

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

   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
    }
}

Ответ 8

Попробуйте под кодом:

btn.contentHorizontalAlignment = .right

Ответ 9

Именно так:

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

Ответ 10

Это работает для меня:

self.acceptButton.setImage(UIImage(named: image), for: UIControl.State.normal)
self.acceptButton.semanticContentAttribute = .forceRightToLeft
self.acceptButton.imageEdgeInsets = UIEdgeInsets(top: 0, left: 9, bottom: 0, right: 0)

Ответ 11

Чтобы выровнять изображение по правому краю, лучше выбрать вариант "Семантический", "Принудительно направить справа налево". Кроме того, я хочу добавить еще одну вещь. Вы можете сохранить форму изображения кнопки с помощью этой опции. User Defined Runtime Attributes

Ответ 12

Это сработало для меня, установив:

button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentRight;

Затем для внутреннего изображения я установил правильную вставку в 0.

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