2014-06-08 4 views
23

In Obj-CSet contentMode di UIImageView

imageView.contentMode = UIViewContentModeScaleAspectFill;

sarebbe impostare il contentMode.

Perché

imageView.contentMode = UIViewContentModeScaleAspectFill

non funzionare a Swift?

risposta

63

Alquanto confusamente, Swift gocce il prefisso per valori enum objc:

imageView.contentMode = .scaleAspectFill 

Questo perché Swift sa già ciò viene utilizzato il tipo enum. In alternativa, è possibile specificare l'enum troppo:

imageView.contentMode = UIViewContentMode.scaleAspectFill 

Nota: Nelle versioni di Swift prima versione 3, "scaleAspectFill" dovrà essere capitalizzati.

1

Nel linguaggio rapido possiamo impostare la modalità di vista dei contenuti UIImage come

var newImgThumb : UIImageView 
newImgThumb = UIImageView(frame:CGRectMake(0, 0, 100, 70)) 
newImgThumb.contentMode = .ScaleAspectFit 
-1

In Swift Lingua possiamo impostare IMAGEVIEW in textField come indicato di seguito. colore

let RightImageView = UIImageView() 
RightImageView.image = image 

let RightView = UIView() 
RightView.addSubview(RightImageView) 
RightView.frame = CGRectMake(0, 0, 30,30) 

dare a visualizzare & IMAGEVIEW Così che si può controllare la vostra posizione IMAGEVIEW aggiunto in textField

RightView.backgroundColor = UIColor.redColor() 
RightImageView.backgroundColor = UIColor.blueColor() 

RightImageView.contentMode = UIViewContentMode.ScaleAspectFill 

RightImageView.frame = CGRectMake(0, 0,30,30) 

textFieldForCountry.rightView = RightView 
1

TLDR;

Vedere il codice di risposta per Swift 3 in basso.

Nota - Si prega di commentare se sono necessarie ulteriori informazioni.

Si prega di verificare la risposta più lunga qui sotto che include come utilizzare la soluzione per l'impostazione di tutte le altre proprietà all'interno del tuo Storyboard o file Xib/Pennino.

Non c'è niente di sbagliato con le altre risposte, ma voglio condividere come si possono fare i valori di impostazione sugli oggetti in Interface Builder. So che l'OP chiede codice, questo esempio viene condiviso per completezza. Ovviamente, se si desidera animare le modifiche alle proprietà o sono necessarie le versioni del codice, le altre risposte continuano ad essere applicate.

In Interface Builder

  1. Selezionare l'ImageView (o qualsiasi altro controllo che ha un incorporato IMAGEVIEW)
  2. Controllare il tipo di base dell'attributo che si desidera impostare (nel caso di contentMode questo è UIViewContentMode) * vedi NB per come ...
  3. Nota il tipo di valori validi che può essere assegnato al tipo di base (in questo caso valori contentMode corrispondono a un numero)
  4. Vai attributi ispettore e vedere i definite dall'utente Attributi di esecuzione (vedi immagine)
  5. Aggiungere un attributo definito dall'utente di tipo Numero e il nome della proprietà che si desidera impostare (in questo caso si sarebbe contentMode)

NB - un facile w per esplorare i tipi di proprietà sottostanti è Cmd + Fare clic sulla proprietà nell'editor del codice sorgente, quindi Cmd + Fare clic sul tipo per quella proprietà.

Ecco un semplice esempio in cui ho impostato alcune proprietà per un UIButton, che include UIImageView come una delle sue sotto-visualizzazioni. L'esempio mostra come è possibile impostare le proprietà sull'oggetto superiore (UIButton) e sull'oggetto secondario (UIImageView).

UDA

Se si dispone di un IMAGEVIEW selezionato poi basta impostare l'User Defined Runtime attributo a contentMode di tipo Numero e qualsiasi valore che si desidera. Questo è un buon metodo perché funzionerà sia per Objc che per Swift.

La cosa fantastica è che è possibile utilizzare lo stesso metodo per acquisire molti altri valori di proprietà statiche per tutto ciò che appare all'interno di Interface Builder.

Documented values for the UIViewContentMode enum

proposito - Swift 3 cambia i valori enum iniziare con una lettera minuscola modo seguente funzionerebbe in Swift 3:

imageView.contentMode = .scaleAspectFill