varias una texto posicionar poner lado imagenes imagen debajo botones alinear alineacion ios xcode uibutton uiimage uiedgeinsets

ios - una - Alinear la imagen del botón con el borde derecho de UIButton



poner texto al lado de una imagen html (7)

Hay muchos hilos sobre la alineación de la imagen de un botón según el texto del título, pero no puedo encontrar nada sobre la alineación de la imagen con el lado derecho del botón.

Esto no tiene efecto:

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

¿Cómo se puede alinear a la derecha la imagen de un botón? ¿Se puede hacer en el Storyboard?


Encontré una manera difícil de actualizar las restricciones para el UIImageView del botón

prueba esto

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

Pero no olvide agregar esto para hacer que las restricciones sean efectivas.

button.translatesAutoresizingMaskIntoConstraints = false button.imageView?.translatesAutoresizingMaskIntoConstraints = false


Hay varias opciones diferentes para hacerlo.

Use semanticContentAttribute

button.semanticContentAttribute = .forceRightToLeft

También puede establecer atributos semánticos desde el diseño de la interfaz (storyboard).


o Use UIView que contiene UIButton y UIImage , como se muestra en esta instantánea.

  • Configure el lado derecho de la imagen en UIView y deshabilite la interacción del usuario, de modo que la acción / toque del usuario pasará al botón.
  • Agregue un botón con el mismo tamaño que UIView, en UIView, con color de fondo transparente y imagen de cubierta.
  • Configure el desplazamiento del contenido para el botón como se muestra en esta instantánea.

Esto hará que sea fácil manejar la acción del botón, las propiedades y personalizar la posición y el tamaño de la imagen de acuerdo con sus requisitos. Prueba esto.


Hazlo como semántico por defecto, es decir, no especificado o fuerza de izquierda a derecha

y en button.imageEdgeInsets configurarlo como

UIEdgeInsets (arriba: 0, izquierda: self.view.frame.size.width - (el tamaño de la imagen + el espacio de alineación), abajo: 0, derecha: 0)

Esto asegurará que, independientemente del tamaño de la vista, siempre alineará la imagen desde el lado derecho del botón.


Pruebe el siguiente código:

btn.contentHorizontalAlignment = .right


Semántico: la fuerza de derecha a izquierda en la vista funciona para mí


Guión gráfico :

Pestaña Atributos> Asegúrate de que la pestaña Borde de contenido esté seleccionada para ''imagen'':

Luego, altera la propiedad ''Izquierda'' y no a la derecha, que es lo que está haciendo programáticamente. Así que en otras palabras, tu relleno es n desde la izquierda.

UIEdgeInsetsMake = TOP | IZQUIERDA | ABAJO | CORRECTO

Programmáticamente:

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

Nota: es posible que también deba modificar la inserción de sus títulos, dependiendo de dónde se encuentre en referencia a su imagen.


Manera limpia de hacer esto en Swift

button.semanticContentAttribute = .forceRightToLeft

Espero que esto ayude