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?

È stato utile?

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

Ricordate di impostare le impostazioni di allineamento di controllo per il pulsante

 impostazioni qui set di controlli di allineamento per il tasto

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

  1. Aprire il XI ter o Storyboard.
  2. Selezionare il pulsante
  3. 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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top