Comment recadrer une UIImageView à une nouvelle UIImage dans "ajustement" mode?

Comment recadrer une UIImageView à une nouvelle UIImage dans

Je voudrais créer un nouveau UIImage par le recadrage de l'image à l'intérieur d'une UIImageView. Par exemple, dans le ci-dessus pic, je veux un nouveau UIImage de la zone entourée en vert. J'ai trouvé le code pour ce faire, normalement il ressemble à quelque chose comme ceci (comme une UIImage catégorie):

- (UIImage *)croppedImage:(CGRect)bounds {
    CGImageRef imageRef = CGImageCreateWithImageInRect([self CGImage], bounds);
    UIImage *croppedImage = [UIImage imageWithCGImage:imageRef];
    CGImageRelease(imageRef);
    return croppedImage;
}

Sens parfait. CEPENDANT, mon UIImageView est dans contentMode "ajustement". Semble que cela complique le CGRect calculs pour CGImageCreateWithImageInRect et je n'ai pas été en mesure de trouver la bonne solution.

Je me dis que je besoin d'appliquer les mêmes transformations du vert rect comme l'ont été fait à l'image?

AUSSI: j'ai trouvé cette autre question ici (Comment savoir la taille de l'image après l'application de l'aspect ajustement de l'image dans une UIImageView), ce qui semble montrer une force brute façon d'obtenir la taille, mais je ne suis toujours pas sûr de la façon qui convient à un recadrage de la situation.

Des idées?

MODIFIER: Dans mon cas, j'ai littéralement avez un carré comme indiqué ci-dessus établi dans une superposition de vue sur la UIImageView. Ainsi, alors que je me rends compte que je suis en recadrant les UIImage (à l'intérieur de la UIImageView), j'ai besoin de changer quelque chose à la verte CGRect telle qu'elle "correspond" à la transformation quand "ajustement" est appliqué. Par exemple, si je laisse mon UIImageView d'en haut gauche de la mode, alors tout fonctionne bien, car il y a un mappage 1:1 entre les sous-jacents UIImage et la UIImageView. Le problème d'en haut gauche de la mode est que l'ensemble de l'image n'affiche toujours pas, car il pourrait être plus gros que mon UIImageView.

OriginalL'auteur pj4533 | 2012-06-02