gpt4 book ai didi

iphone - 使用捏合手势放大 UIImageView

转载 作者:行者123 更新时间:2023-11-29 11:15:14 26 4
gpt4 key购买 nike

我正在使用捏合手势让用户增大/减小图像的大小。我临时操纵 CGAffineTransform 让用户玩转比例尺,然后只需撤消它并设置帧大小,以便图像随质量缩放(CGAffineTransformScale 对图像质量没有任何作用,只会拉伸(stretch)图像)。

    -(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),当捏合手势完成时会发生什么, ImageView 会扭曲成非常细的矩形,没有任何旋转或缩放它们之前。

我认为我可以继承原始旋转并在设置框架后应用它,但我认为这行不通。任何帮助表示赞赏。谢谢

最佳答案

请注意 UIView documentation说只要 UIViews 转换不是它的恒等转换,frame 属性就变成未定义的并且不应该被使用,所以不要依赖 CGRect endFrame = ... 来工作。

否则,如果您想要改变质量,只需将变换设置为标识,缩放框架,然后重新应用变换以保持旋转。那应该可以正常工作。

关于iphone - 使用捏合手势放大 UIImageView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9745757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com