【问题标题】:How to reset UIImageView transform property如何重置 UIImageView 转换属性
【发布时间】:2011-07-16 07:06:30
【问题描述】:

在我的项目中,我正在 UIImageView 上进行以下活动 1.)旋转它 2.) 移动它 3.) 放大它。 我的项目还有一个名为“New”的按钮,它将重置应用程序的所有设置。我的问题是,如果我旋转图像并单击新按钮,UIImageVIew 的设置不会改变。有人有什么想法吗。在此先感谢

-(void)rotate:(id)sender {

    if([(UIRotationGestureRecognizer*)sender state] == UIGestureRecognizerStateEnded) {

        lastRotation = 0.0;
        return;
    }

    CGFloat rotation = 0.0 - (lastRotation - [(UIRotationGestureRecognizer*)sender rotation]);

    CGAffineTransform oldTransform = [(UIPinchGestureRecognizer*)sender view].transform;
    CGAffineTransform newTransform = CGAffineTransformRotate(oldTransform,rotation);

    [[(UIRotationGestureRecognizer*)sender view] setTransform:newTransform];

    lastRotation = [(UIRotationGestureRecognizer*)sender rotation];
}

上面的代码我用于旋转。

【问题讨论】:

  • 某种意义上的重置?图像将被旋转回原来的位置对吗?
  • 请贴一些你的代码.....我们可能会帮助你
  • @iphoneFreak 感谢您的回复。是的。
  • 可能您必须暂时保存图像的位置(帧)并添加一些标志以了解图像是否已经移动,然后使用您保存的帧重置图像。

标签: iphone ipad


【解决方案1】:

如果imageView 是您的UIImageView 对象,则使用重置transform 属性完成,

imageView.transform = CGAffineTransformIdentity;

此外,如果您没有在其他任何地方使用lastRotation,您可以稍微缩短rotate: 方法。

-(void)rotate:(UIRotationGestureRecognizer *)gesture {
    UIView * view = gesture.view;
    view.transform = CGAffineTransformRotate(view.transform, gesture.rotation);
    gesture.rotation = 0;
}

【讨论】:

  • 在swift 3中,改为imageView.transform = CGAffineTransform.identity;
【解决方案2】:

对于感兴趣的人来说,另一个实用的 Swift 示例,我能够构建 Deepak 旋转图像的示例,然后通过使用 UIImageView 的扩展名来反转旋转

extension UIImageView {

    func rotateCounterClockwise() {
        UIView.animateWithDuration(0.3, animations: {
            self.transform = CGAffineTransformMakeRotation(CGFloat(-M_PI))
        })
    }

    func rotateToOriginal() {
        UIView.animateWithDuration(0.3, animations: {
            self.transform = CGAffineTransformIdentity
        })
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 2018-03-28
    • 2022-01-04
    • 1970-01-01
    相关资源
    最近更新 更多