2015-08-31 6 views
17

mi piacerebbe realizzare:Insetti per UIImageView?

  • Scala alla modalità di visualizzazione dell'immagine
  • Insets a UIImageView riempire in modo che l'immagine non soddisfa i bordi del UIImageView

Bottomline: voglio per aumentare l'area di tocco di UIImageView senza allungare l'immagine oltre determinate dimensioni.

È possibile tramite lo storyboard? Se no, qualcuno può dire come farlo a livello di programmazione?

È possibile ottenere funzionalità simili tramite UIButton e impostare l'immagine inserita tramite storyboard ma non riesco a trovare nulla di simile con UIImageView.

+0

State considerando di cambiare la dimensione dell'immagine, mentre in fase di esecuzione senza effettivamente modificare l'immagine originale? lo farà? –

+0

sì, questo sì. – Sarasranglt

+0

Questo cambierebbe la scala e renderà pixelata la tua immagine se la tua vista è bassa, invece c'è un inversione di tendenza che puoi provare, se sei disposto a riconsiderare posso postare una risposta –

risposta

20

secondo il metodo descritto here:

UIImage *image= [MyUtil imageWithImage:[UIImage imageNamed:@"MyImage"] scaledToSize:CGSizeMake(80, 80)]; 

UIImageView* imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]; 
imgView.contentMode = UIViewContentModeCenter; 
[imgView setImage:image]; 

Ora i vostri inserti diventano 100-80 vale a dire 20.

Questa soluzione consente di fornire inserimenti a UIImageView. Le risposte migliori sono benvenute.

4

è possibile aggiungere una UIView prima e poi aggiungere il UIImageView all'interno del UIView con un'imbottitura di quello che vuoi, e se volete che il vostro gesto per ottenere colpite solo in UIImageView, rendono UserInteractionEnable di sì o se si desidera che il gesto per essere nel complesso quindi è possibile aggiungere il gesto all'intero UIView

15

Sembra che si desidera avere un imageView tangibile, quindi perché non utilizzare un UIButton con immagine e imageEdgeInsets?

UIButton *b = [UIButton buttonWithType:UIButtonTypeCustom]; 
[b setFrame:someFrame]; 
[b setImage:img forState:UIControlStateNormal]; 
b.imageEdgeInsets = UIEdgeInsetsMake(20, 20, 20, 20); 
[b addTarget:self action:@selector(imageClicked:) forControlEvents:UIControlEventTouchUpInside]; 
+0

Impressionante mi piace l'idea di utilizzare il pulsante per aggiungere funzionalità di inset all'immagine. +1 – Michael

+0

Funziona bene fino a quando iOS non cambia di nuovo il look/feel dei pulsanti e improvvisamente inserisce bordi o sfondi in modo che non appaiano più solo immagini prive di ornamenti. –

2

È possibile aggiungere inserto a UIImage anziché UIImageView.

Swift 4

let imageView = UIImageView() 
imageView.contentMode = .scaleAspectFill 
imageView.image = UIImage(named: "example")?.withAlignmentRectInsets(UIEdgeInsets(top: -4, left: 0, bottom: -4, right: 0)) 
+0

Ho corretto la sintassi ma questo in realtà non funziona – Ixx