2012-03-01 19 views
5

Ho una UIImageView come subview di UIView (telaio 300 x 300). Il mio UIImage potrebbe essere verticale, orizzontale o alcune dimensioni dispari. Come si compila lo UIImage nella dimensione della cornice UIView senza allungare l'immagine a 300 x 300?UIImageView compilare UIView

Lo scopo di questo, sarà aggiungere un altro UIImageView come il bordo dell'immagine. Per favore aiuto.

Grazie.

risposta

13

Prova

[img setContentMode:UIViewContentModeScaleAspectFit];

UIViewContentModeScaleAspectFit: scala il contenuto per adattarsi alla dimensione della vista dal mantenendo le proporzioni. Qualsiasi area rimanente dei limiti della vista è trasparente.

o [img setContentMode:UIViewContentModeScaleAspectFill];

UIViewContentModeScaleAspectFill: ridimensiona il contenuto per riempire la dimensione della vista. Una parte del contenuto di potrebbe essere ritagliata per riempire i limiti della vista.

se si sta Clipping subviews, allora avete bisogno di fare

[imgView clipToBounds:YES]; 
+0

Ho provato ad utilizzare le 2 modalità precedenti, la mia immagine non si adatta a 300 x 300 – RockBaby

+0

ivEditImage = [[UIImageView alloc] initWithImage: imgChoosen]; ivEditImage.frame = vwEditingImage.frame; [ivEditImage setContentMode: UIViewContentModeScaleAspectFill]; – RockBaby

+0

anche 'UIViewContentModeScaleAspectFit' non lo fa? –

0

Utilizzare la proprietà contentMode di UIImageView.


Edit: e impostare la dimensione immagine da 300x300 .

0
[image setContentMode:UIViewContentModeScaleToFill]; 
1

Impostare la proprietà contentMode di UIImageView a uno di questi valori a seconda di dove si vuole metterlo nel superview:

UIViewContentModeCenter, 
    UIViewContentModeTop, 
    UIViewContentModeBottom, 
    UIViewContentModeLeft, 
    UIViewContentModeRight, 
    UIViewContentModeTopLeft, 
    UIViewContentModeTopRight, 
    UIViewContentModeBottomLeft, 
    UIViewContentModeBottomRight, 

Come questi valori:

UIViewContentModeScaleToFill, 
    UIViewContentModeScaleAspectFit, 
    UIViewContentModeScaleAspectFill, 

Effettivamente causerà l'immagine 300 x 300, che è ciò che non vuoi.

+3

C'è un modo per combinarle? Quello che voglio è questo: assumere un'immagine di 100x10 e un UIImageView a schermo intero. Voglio che si espanda fino a quando la dimensione orizzontale è uguale alla larghezza di UIImageView (diciamo 320 per l'iPhone) e l'immagine risultante (ora a 320x32) per essere in alto. Ho provato questo imgview.contentMode = UIViewContentModeScaleAspectFit | UIViewContentModeTop; ma non funziona. Fa semplicemente la parte UIViewContentModeTop (100x10 in alto). – Gik

+0

@Gik - Hai trovato un modo per farlo. Sto avendo lo stesso identico problema. –

+0

L'ho fatto usando un trucco. Ho "creato" un'altra immagine (dall'originale), stirata per riempire le dimensioni più piccole e poi riempita con i pixel che mi mancavano. Così alla fine ho ottenuto un'immagine 300x300 dall'originale. Se vuoi, potrei pubblicare il codice. – Gik

2

Ah ho appena riletto quello che stavi chiedendo, so qual è la tua domanda ora.

La cornice del tuo UIImageView cambia e, quando lo fa, la tua immagine. Se non si desidera la vostra immagine per cambiare, ma si desidera che il ImageView per regolare per riempire la vista è contenuto in.

UPDATE

ho capito.

[self.imageView setContentMode:UIViewContentModeCenter]; 

Indipendentemente dall'orientamento, la dimensione rimane la stessa.

Hai anche la possibilità di impostarlo per allineare in alto, in basso, a sinistra, a destra, in alto a sinistra, in alto a destra, in basso a sinistra, in basso a destra, i quali aiutano solo ad allineare l'immagine e NON a ridisegnare o ridimensionare l'immagine.

Questo aiuto?

+0

se riesco a ridisegnare, allungherà la mia immagine. C'è qualche opzione per non allungare? – RockBaby

Problemi correlati