我使用捏手势让用户增加/减小图像的大小。我暂时操纵该CGAffineTransform来让用户使用比例尺,然后撤消它并设置帧大小,以使图像按质量缩放(CGAffineTransformScale对图像质量没有任何作用,只会拉伸图像)。
-(void)handlePinch:(UIPinchGestureRecognizer *)recognizer{
if(recognizer.state == UIGestureRecognizerStateBegan){
self.alpha = 0.7;
startingTransform = self.transform;
}
recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
recognizer.scale = 1;
if (recognizer.state == UIGestureRecognizerStateEnded){
self.alpha = 1.0;
CGRect endFrame = self.frame;
self.transform = startingTransform;
self.frame = endFrame;
//self.transform = CGAffineTransformRotate(self.transform, acos(startingTransform.c)); //reapply rotation?
}
}
问题:我的代码存在的问题是它不考虑轮换。我的某些图像开始旋转(之前已将CGAffineTransformRotate应用于它们),并且捏捏手势完成后会发生什么情况,即图像视图会翘成非常细的矩形,没有任何旋转或缩放。
我以为可以保留原始旋转并在设置框架后应用它,但是我认为这不起作用。任何帮助表示赞赏。谢谢
最佳答案
注意UIView documentation表示,一旦UIViews转换不是其标识转换,则frame属性将变为未定义且不应使用,因此不要依赖CGRect endFrame = ...
进行工作。
否则,如果您想改变质量,只需将变换设置为identity,缩放框架,然后重新应用变换以保持旋转。那应该工作正常。
关于iphone - 用捏手势放大UIImageView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9745757/