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:
Utilisation du remplissage d'aspect
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.
Dans Interface Builder, utilisez la configuration suivante:
Il existe deux paramètres importants, à savoir:
Mode: Aspect Fill
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.
créez un IBOutlet
dans votre contrôleur.
@property (retain)IBOutlet UIImageView* imageView;
et dans -(void) viewDidLoad
set
imageView.layer.masksToBounds = YES;
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").
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