web-dev-qa-db-fra.com

Recadrer UIImage pour s'adapter à une image de cadre

J'ai besoin de recadrer un UIImage, pris avec l'appareil photo de l'appareil, afin qu'il tienne dans un autre UIImage, ce qui représente un frame (avec des bords arrondis, etc.). Vérifiez l'image ci-dessous:

enter image description here Utilisation du remplissage d'aspect

enter image description here Utilisation d'Aspect Fit

Donc, ce dont j'ai besoin, c'est de supprimer l'excès d'image qui est hors des limites du cadre. J'ai essayé d'utiliser UIBezierPath, CGImageRef et d'autres méthodes que j'ai googlé mais je ne trouve pas de solution pour cela.

44
CainaSouza

Dans Interface Builder, utilisez la configuration suivante:

enter image description here

Il existe deux paramètres importants, à savoir:

  1. Mode: Aspect Fill

  2. Clip Subviews

Cela peut également être fait par programme:

[imageView setContentMode:UIViewContentModeScaleAspectFill];
[imageView setClipsToBounds:YES];

Cela remplira correctement la vue avec l'image, gardera ses proportions et masquera ce qui ne convient pas.

127
Pier-Luc Gendreau

créez un IBOutlet dans votre contrôleur.

@property (retain)IBOutlet UIImageView* imageView;

et dans -(void) viewDidLoad set

imageView.layer.masksToBounds = YES;
4
Remizorrr

Dans l'interface Builder, accédez au menu Mode à l'intérieur du volet de détails (le quatrième) et choisissez celui qui convient à votre UIImageView ( Je suppose que "centre" ou "aspect").

enter image description here

ANCIENNE RÉPONSE:

Vous pouvez utiliser la propriété contentGravity de CALayer pour la faire fonctionner

Constante qui spécifie la façon dont le contenu du calque est positionné ou mis à l'échelle dans ses limites.

       @property(copy) NSString *contentsGravity
1
sergio