Iphone 使用收缩手势放大UIImageView

Iphone 使用收缩手势放大UIImageView,iphone,ios,xcode,ipad,Iphone,Ios,Xcode,Ipad,我使用了一个收缩手势,让用户增加/减少图像的大小。我临时操纵CGAffineTransform,让用户使用缩放,然后撤销它并设置帧大小,以便图像按质量缩放(CGAffineTransformScale对图像质量没有任何影响,只会拉伸图像) 问题:我的代码的问题是它没有考虑轮换。我的一些图像一开始是旋转的(之前应用了CGAffineTransformRotate),当收缩手势结束时会发生什么,imageview会扭曲成非常薄的矩形,没有以前的任何旋转或缩放 我想我可以在设置好框架后继续原来的旋转并

我使用了一个收缩手势,让用户增加/减少图像的大小。我临时操纵CGAffineTransform,让用户使用缩放,然后撤销它并设置帧大小,以便图像按质量缩放(CGAffineTransformScale对图像质量没有任何影响,只会拉伸图像)

问题:我的代码的问题是它没有考虑轮换。我的一些图像一开始是旋转的(之前应用了CGAffineTransformRotate),当收缩手势结束时会发生什么,imageview会扭曲成非常薄的矩形,没有以前的任何旋转或缩放

我想我可以在设置好框架后继续原来的旋转并应用它,但我认为这不起作用。感谢您的帮助。感谢

请注意,说明一旦UIViews转换不是其标识转换,框架属性将变得未定义且不应使用,因此不要依赖于
CGRect endFrame=…


否则,如果要更改质量,只需将变换设置为“标识”,缩放帧,然后重新应用变换以保持旋转。这应该可以正常工作。

将imageview添加为scrollview的子视图,然后指定scrolview的委托,该委托要求将视图作为imageview。这很容易解决


嗨,“转变为身份”是什么意思?另外,如何缩放帧,是指使用收缩手势缩放来操纵frame.size.width/height,而不是CGAffineTransformScale?Thanksan标识变换基本上是一种不做任何事情、不缩放、旋转或倾斜的变换。通过缩放帧,我的意思是操纵帧的大小,是的,但请记住,您必须相应地重新定位视图,最好在缩放前保存view.center并在缩放后重新应用。谢谢回复,但这是为了放大图像,对吗?不放大它的整体尺寸?scrolview的zoomscale会给你这个比例。一旦用户决定了合适的比例,您就可以将其应用于图像。毕竟我们必须给用户一种感觉,对吗?
    -(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?
    }
}