Perché un'immagine UIButton personalizzata non ridimensiona in Interface Builder?
-
21-08-2019 - |
Domanda
Perché un'immagine personalizzata UIButton non ridimensionare con il tasto?
Ho impostato la sua modalità di visualizzazione su Scala a riempire in Interface Builder, ma un'immagine di UIImageView differenza, non rispetta tale impostazione.
sto cercando nel posto sbagliato o non è possibile?
Soluzione
Anche se questo potrebbe non essere esattamente quello che stai dopo -. L'immagine di sfondo ha di scala
Altri suggerimenti
Prova questo:
[button setImage:image forState:UIControlStateNormal];
button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill;
In Swift:
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
So che questo è vecchio, ma penso che la risposta corretta è che si dovrebbe impostare la modalità di contenuto al UIImageView "nascosto" che si trova all'interno del UIButton:
button.imageView.contentMode = UIViewContentModeScaleAspectFill;
Questo cambierà il modo di contenuti per le immagini viste le immagini impostate con:
[button setImage:yourAwesomeImage forState:UIControlStateNormal];
//Or any other state
Just do (Da disegno o da codice):
Da design
- Aprire il XI ter o Storyboard.
- Selezionare il pulsante
- All'interno Attributo Ispettore (lato destro)> in "Control" > selezionare ultimi 4 ° opzione sia per orizzontale e Verical.
[per il punto # 3: Cambiamento orizzontale e verticale Allinea per UIControlContentHorizontalAlignmentFill e UIControlContentVericalAlignmentFill]
Da Codice
button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;
Interface Builder
Per ottenere immagini in UIButtons di scalare allo stesso modo di UIViews in Builder interfaccia procedere come segue:
Seleziona l'UIButton e dalla Identità Ispettore per aggiungere il seguente utente Runtime Definito Attributi :
imageView.contentMode Numero 1
Dove numero è il numero di enum contentMode, ad esempio:
0 = Scale to fill
1 = Aspect Fit
2 = Aspect Fill
etc..
Quindi aprire la Attributi editore per il tuo UIButton e sotto Controllo impostare il Allineamento per Fill (ultimo pulsante a destra) sia orizzontale verticale.
SWIFT 3
Nota è anche possibile fare questo in codice con il seguente:
button.imageView?.contentMode = .scaleAspectFit
button.contentVerticalAlignment = .fill
button.contentHorizontalAlignment = .fill
Prova a impostare la proprietà clip subviews in Interface Builder su true.
La speranza che aiuta.
La soluzione migliore che ho trovato finora in Swift 2.1 è il seguente:
self.imageButton.imageView?.clipsToBounds = true
self.imageButton.imageView?.contentMode = UIViewContentMode.ScaleAspectFit
Questa scalerà l'immagine in modo che ha una misura aspetto nel ImageView.
Basta avere un vero e proprio UIImageView e mettere un UIButton su di esso e tramite il menu di layout impostato per eseguire il. Poi si può scalare la vostra immagine in modo corretto.