Insets à UIImageView?

j'aimerais réaliser:

  • échelle pour remplir mode de vue d'image
  • Insète à UIImageView de sorte que l'image ne correspond pas aux bords du UIImageView

Bottomline: je veux augmenter la surface tactile du UIImageView sans étirer l'image au-delà d'une certaine taille.

est-ce possible par storyboard ? Si non quelqu'un peut dire comment le faire par programmation ?

je peux obtenir une fonctionnalité similaire grâce à un UIButton et à la mise en place de l'image insérée dans le storyboard, mais je ne peux pas trouver une telle chose avec UIImageView .

27
demandé sur Dharmesh Dhorajiya 2015-08-31 08:12:36

4 réponses

en utilisant la méthode indiquée ici :

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];

maintenant vos insets deviennent 100-80 i.e. 20 .

il s'agit d'une solution de contournement pour fournir des insets à UIImageView. Les meilleures réponses sont les bienvenues.

25
répondu Sarasranglt 2017-05-23 12:02:30

il semble que vous voulez avoir une vue d'image tactile, alors pourquoi ne pas utiliser un UIButton avec l'image et les gaines imageedge?

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];
19
répondu MarkHim 2017-04-04 18:30:55

vous pouvez ajouter inset à UIImage au lieu de UIImageView .

Swift 4

let imageView = UIImageView() 
imageView.contentMode = .scaleAspectFill
imageView.image = UIImage(named: "example")?.withAlignmentRectInsets(UIEdgeInsets(top: -4, left: 0, bottom: -4, right: 0))
13
répondu BumMo Koo 2018-02-17 21:43:11

vous pouvez ajouter un UIView d'abord et ensuite vous ajoutez votre UIImageView à l'intérieur du UIView avec un rembourrage de tout ce que vous voulez, et si vous voulez que votre geste soit affecté seulement dans UIImageView , faites-le UserInteractionEnable à oui ou si vous voulez que le geste soit dans le tout alors vous pouvez ajouter le geste à l'ensemble UIView

4
répondu Saheb Roy 2015-08-31 05:44:53