UIImageViewに円形マスクを追加したいと思います。マスクを追加するために使用している関数は次のとおりです。
- (void) addMaskToBounds:(CGRect) maskBounds
{
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGPathRef maskPath = CGPathCreateWithEllipseInRect(maskBounds, NULL);
maskLayer.bounds = maskBounds;
[maskLayer setPath:maskPath];
[maskLayer setFillColor:[[UIColor blackColor] CGColor]];
maskLayer.position = CGPointMake(maskBounds.size.width/2, maskBounds.size.height/2);
[self.imageView.layer setMask:maskLayer];
}
マスクを追加することはできますが、それに伴って画像フレームと中心を変更しているため、問題が発生します。ユーザーの操作に応じて画像が拡大・縮小されます。したがって、マスクを小さいときと拡大するときに2回追加する必要があります。そのため、フレームの変化をアニメートしているため、アニメート中に画像が歪んだり、ずれたりします。どうすればこれを克服できますか?
サンプルプロジェクトで最もよく説明されていると思います。ここで、GitHub でデモ プロジェクトhttps://github.com/akshaynhegde/MaskImageを作成しました。それを実行して問題を確認し、問題の解決方法を教えてください。