2015-09-03 2 views
15

Ci sono molti fili sull'allineamento di un'immagine di pulsante in base al testo del titolo, ma non riesco a trovare nulla sull'allineamento dell'immagine sul lato destro del pulsante.Allineare l'immagine del pulsante al margine destro di UIButton

questo non ha alcun effetto:

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

Come si può destro allineare l'immagine per un pulsante? Può essere fatto nello storyboard?

+0

possibile duplicato di [iPhone UIButton - posizione dell'immagine] (http://stackoverflow.com/questions/2515998/iphone-uibutton-image-position) – Fonix

+0

se si sta puntando su iOS 9 è possibile [farlo come questo] (http://stackoverflow.com/a/32014907/1219956) – Fonix

+0

Non è un duplicato. Non mi interessa il testo del titolo. Voglio solo che l'immagine sia allineata a destra a qualunque sia la cornice del pulsante. – soleil

risposta

15

Storyboard:

attributi Tab> Assicuratevi che la vostra scheda limite del contenuto è selezionato per 'immagine':

1

Poi si modifica la proprietà 'sinistra' non è giusto, che è quello che il tuo fare programmaticamente. Quindi, in altre parole, la tua imbottitura n dalla sinistra

UIEdgeInsetsMake = TOP | SINISTRA | IN BASSO | DESTRA

di programmazione:

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

Nota: potrebbe essere necessario modificare anche i titoli inserto, a seconda di dove si è in riferimento alla vostra immagine

+0

Grazie per il suggerimento. Questo fa rientrare l'immagine da sinistra. In altre parole, con tutti e 4 i valori a 0, l'immagine è allineata a sinistra. Se aumento il valore di inserto "a sinistra", l'immagine si allontana dal bordo sinistro. Questo non aiuta, perché ho bisogno che l'immagine sia appuntata sul lato destro, in modo che, indipendentemente dalla larghezza del pulsante, rimanga allineata a destra. – soleil

+0

@soleil right. Per quanto ne so che non può essere giù con un pulsante di sistema, ma cosa so davvero. L'ho appena usato perché è quello che hai dato come esempio come qualcosa che hai provato. Hai ragione, non una buona soluzione per diverse larghezze, ma va bene per le larghezze statiche. – soulshined

+0

Beh, in realtà. @soleil basta rendere il lato sinistro 'self.button.frame.size.width - widthOfImage' o qualcosa del genere. – soulshined

34

semantico: Forza da destra a sinistra su Vista funziona per me enter image description here

+3

UISemanticContentAttribute avvia da iOS 9.0 –

+0

Grazie Man !! Lavorare come un fascino per me !! –

7

Ho trovato un modo complicato Aggiorna i vincoli per il UIImageView del pulsante

provare questo

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

ma non dimenticare di aggiungere questo per rendere i vincoli efficaci

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

EZ. Grazie. Ho provato a verificare se l'imageView di UIButton ha già dei vincoli ma non ne trova nessuno. Questa è l'ultima opzione se vuoi che imageView si attacchi a un certo lato del tuo pulsante senza dipendere dal titolo. – Glenn

+0

Bella idea simon – Marios

2

rendono default semantica cioè non specificato o forza sinistra a destra

e in button.imageEdgeInsets impostato come

UIEdgeInsets (in alto: 0, a sinistra: self.view.fra me.size.width - (la dimensione dell'immagine + lo spazio di allineamento), in basso: 0, a destra: 0)

questo farà sì che non importa quale sia la dimensione della vista, sarà sempre allineare l'immagine dal lato destro del pulsante

+0

* forza da destra a sinistra e per spazio di allineamento intendevo alcuni dire costante 10.0 in modo che non si abbracci all'angolo sinistro della vista – Tharzeez

+0

Bello e semplice. – mehdok

5

modo pulito di fare questo in Swift

button.semanticContentAttribute = .forceRightToLeft 

Spero che questo aiuti

0

ci sono diverse opzioni per farlo.

Usa semanticContentAttribute

button.semanticContentAttribute = .forceRightToLeft 

È possibile impostare l'attributo semantico dall'interfaccia (storyboard) il layout anche.

enter image description here


o Uso UIView contenente UIButton e UIImage, come mostrato in questa istantanea.

  • Imposta Immagine lato destro in UIView e disabilita l'interazione dell'utente, quindi l'azione utente/tocco verrà passata al pulsante.
  • Aggiungi pulsante con le stesse dimensioni di UIView, in UIView, con colore di sfondo trasparente e immagine di copertura.
  • Imposta l'offset del contenuto per il pulsante come mostrato in questa istantanea.

enter image description here

questo modo sarà più facile da gestire di azione pulsante, proprietà e personalizzare la posizione dell'immagine & formato secondo il vostro requisito. Prova questo.

Problemi correlati