2010-09-10 4 views
10

Qualcuno può rispondere in modo definitivo? Sembra che a volte cambiando il frame di un UIImageView ridimensiona la sua immagine e talvolta non lo fa.iOS - Dovrebbe cambiare la cornice di un UIImageView ridimensionare la sua immagine?

Ho caricato un'immagine e creato un UIImageView con esso, con dimensioni di circa 100x100. Facendo seguito ha assolutamente alcun effetto:

myImageView.contentMode = UIViewContentModeScaleAspectFit; 
myImageView.frame = CGRectMake(0, 0, 30, 30); 

Ovviamente desidera ridurre l'immagine verso il basso, ma rimane solo full size.

EDIT: Se faccio questo:

myImageView.clipsToBounds = YES; 

ottengo una parte 30x30 ritagliata dell'immagine, ma solo l'angolo superiore di esso. Come posso ridurre l'intera immagine a 30x30?

risposta

2

Sì, stai facendo la cosa giusta. contentMode usato in questo modo dovrebbe mantenere l'immagine dimensionata nella tua vista con l'aspetto conservato. E ovviamente cambiare la cornice dovrebbe riposizionare e ridimensionare la vista.

Sei sicuro che nient'altro è pescoso? myImageView nil per qualche motivo qui? (Se si tratta di una vista creata dal generatore di interfacce, la presa è collegata?)

+0

non è assolutamente nulla, come appare sullo schermo e posso impostare ClipToBounds su di esso. – sol

1

Si potrebbe pensare che funzionerebbe, ma ci sono persone ovunque che hanno lo stesso problema. L'unica volta che ho visto che il lavoro non è per auto-scaling, è da realtà ridimensionamento e ridisegnando l'immagine: How to scale a UIImageView proportionally?

1

Prova questo:

myImageView. limiti = CGRectMake (0, 0, 30, 30);

Non ho avuto fortuna con la modifica del frame di un UIImageView per ridimensionare l'immagine. Prova a cambiare i limiti invece.

3

Vecchia domanda, ma nel mio caso il problema stava cercando di apportare le modifiche in "viewDidLoad" per il controller di visualizzazione. Prova a cambiare la cornice in "viewDidLayoutSubviews".

- (void)viewDidLayoutSubviews 
{ 
    //do uiimageview frame changing here 
    ... 
}