¿Cómo centrar una imagen dentro de un UIButton sin estirar en ambas direcciones en Swift?

Estoy haciendo un teclado personalizado y necesito centrar la imagen del icono de cambio dentro del botón de cambio. La imagen es de 100 px x 100 px.

Sin embargo, el marco del botón en vertical es36pt x 38pt, y en paisaje, es68pt x 32pt. He intentado usar la propiedad de inserción de imagen de botón para centrar la imagen. Sin embargo, no lo hace.

Lo intenté y configuré las inserciones del borde de la imagen en(25,25,25,25), la imagen se centra en ambos tamaños. Sin embargo, el icono se vuelve demasiado pequeño para verlo.

shiftButton.setImage(UIImage(named: "shift"), forState: .Normal)

shiftButton.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0)

Estoy haciendo el botón programáticamente. Y, necesito el botón para escalar manteniendo su relación de aspecto, es decir1:1. Su ancho o alto máximo siempre está vinculado a la altura del botón. El ancho / alto de la imagen debe ser el máximo de la altura del botón. Y no debe estirarse de ninguna manera para distorsionar el ícono. Sin embargo, el botón en sí puede estirarse.

Necesito que la imagen se escale de acuerdo con el marco del botón, pero mantenga su relación de aspecto. Y puede reducir o aumentar la escala, pero siempre debe mantener la relación de aspecto 1: 1.

¿Alguna sugerencia para resolver este problema?

Respuestas a la pregunta(4)

Su respuesta a la pregunta