web-dev-qa-db-fra.com

créer une UIImageView qui recadre une image et affiche uniquement 100w 100h à 50x et 200y

J'essaie de créer une boîte qui apparaît dans mon application xcode qui affiche simplement une image de cette taille. J'ai le suivant

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

mais cela crée l'image en taille réelle et la montre. Comment pourrais-je seulement l'afficher comme 100w par 100h à 50 au-dessus et 200 en baisse? Vais-je utiliser CGRect?

De plus, puis-je faire en sorte que cliquer dessus le fasse disparaître?

edit # 1 Je ne veux pas redimensionner l'image - je préfère simplement tirer les 100 pixels carrés et les placer dans un cadre.

26
timpone

Veuillez essayer d'utiliser le code suivant.

MyImageview.contentMode = UIViewContentModeScaleAspectFill; 
MyImageview.clipsToBounds = YES;
76

Vous pouvez recadrer l'image avec le code ci-dessous:

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

Vous pouvez également obtenir l'effet de recadrage en cochant l'option Clip Subviews dans le storyboard.

enter image description here

Ou des paramètres équivalents dans le code avec Swift 4 +

imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
13
Yuchen Zhong