我过去对此的一般策略是将 UIImageView 放在另一个 UIView 中(以便剪辑它)并将 aUIPinchGestureRecognizer
和 a添加UIPanGestureRecognizer
到父 UIView。当您收到其中任何一个的事件时,您将适当的转换应用于transform
UIImageView 的属性。
例如,在缩放时,您将执行以下操作:
-(void)scale:(UIPinchGestureRecognizer*)pinch
{
float scale = pinch.scale;
imageView.transform = CGAffineTransformScale(imageView.transform, scale, scale);
pinch.scale = 1;
}
重置比例的最后一步很重要,因为您每次只是缩放现有变换而不是基本恒等变换。UIPanGestureRecognizer
您应该会发现您将能够使用 a及其方法来处理转换translationInView:
(请记住,您还必须使用setTranslationInView:CGPointZero
.
最后,为了获得裁剪/剪裁UIImage
,您可以捕获视图的内容(我相信 transform 属性仅在 iOS 7+ 上受到尊重)或者将 UIImage 渲染为 a CGContextRef
,并使用相同的变换来转换CGContextRef
.