2012-12-05 8 views
19

Sto provando a creare una finestra che si apre nella mia app xcode che mostra solo un'immagine di quella dimensione. Ho il seguentecrea un UIImageView che ritaglia un'immagine e visualizza solo 100w 100h a 50x e 200y

UIImageView *newView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"beach.jpg"]]; 

ma questo crea l'immagine a dimensione intera e mostra appena. Come potrei mostrarlo come 100w per 100h a 50 over e 200 down? Dovrei usare CGRect?

Inoltre, posso fare in modo che facendo clic su di esso non scompaia?

edit # 1 Non voglio ridimensionare l'immagine verso il basso - sarebbe piuttosto appena tirare i 100 pixel quadrati e metterli in una cornice.

+0

è necessario aggiungere UITapGestureRecognizer sul UIImageView per il tapping. – nhahtdh

+0

Per la modifica: quindi imposta i limiti anziché la cornice. Non è necessario il contentMode, ma è necessario impostare clipToBounds su YES. – nhahtdh

risposta

67

Si prega di provare con il seguente codice.

MyImageview.contentMode = UIViewContentModeScaleAspectFill; 
MyImageview.clipsToBounds = YES; 
+0

Sì ... Anche questi 2 devono essere impostati insieme al frame. – nhahtdh

+0

thx P, questo sta ridimensionando l'immagine - un modo per ottenere la dimensione originale? – timpone

+0

Hai provato MyImageview.contentMode = UIViewContentModeTopLeft; –

15

Puoi immagine raccolto con il codice qui sotto:

CGRect cropRegion = CGRectMake(50, 200, 100, 100); 
UIImage *image = [UIImage imageNamed:@"beach.jpg"]; 
CGImageRef subImage = CGImageCreateWithImageInRect(image.CGImage, cropRegion); 
UIImage *croppedImage = [UIImage imageWithCGImage:subImage]; 
UIImageView *newView = [[UIImageView alloc] initWithImage:croppedImage]; 
+0

Ciò funziona perfettamente. È bello vedere una soluzione che non richiede la creazione di contesti e cose completamente nuovi solo per un piccolo raccolto. – weienw

8

È possibile anche ottenere l'effetto di ritaglio controllando i subviews clip opzione nella storyboard.

enter image description here

+0

No, non funziona @Yuchenzhong –

+0

@Mansuu .... dovrebbe funzionare. In caso contrario, provare a farlo nel codice https://stackoverflow.com/a/13715487/1035008, che dovrebbe essere equivalente a queste due impostazioni. –

Problemi correlati