1

这是我长期以来一直存在的问题。使用新的 iOS6 和自动布局,我的手势识别器“游戏”不再工作。

我使用情节提要创建了一个应用程序,其中一个选项卡上有一个小游戏应用程序,用户必须在 5 像素、5% 大小和 5 度范围内缩放、旋转和平移另一个图像之上的图像。我在使用自动布局时遇到的问题是,当旋转和缩放游戏图像时,图像会“跳”回到它的起始位置并且笨拙地旋转而不是围绕中心旋转。

我处理旋转缩放手势的方法如下。

旋转

//rotation gesture recognizer response
- (void)respondToRotateGesture:(UIRotationGestureRecognizer *)gesture {
    if (gesture.state == UIGestureRecognizerStateBegan || gesture.state == UIGestureRecognizerStateChanged) {
        image.transform = CGAffineTransformRotate(gesture.view.transform, gesture.rotation);
    }
    if (gesture.state == UIGestureRecognizerStateEnded) [self didWin]; //not important for question
    gesture.rotation = 0;
}

//pinch gesture recognizer
- (void)respondToPinchGesture:(UIPinchGestureRecognizer *)gesture {
    if (gesture.state == UIGestureRecognizerStateBegan || gesture.state == UIGestureRecognizerStateChanged) {
            image.transform = CGAffineTransformScale(image.transform, gesture.scale, gesture.scale);
    }
    if (gesture.state == UIGestureRecognizerStateEnded) [self didWin]; //not important for question
    gesture.scale = 1;
}

我确实意识到最简单的解决方案是关闭自动布局,但这会导致情节提要的其余部分出现问题,因为在情节提要中您不能为一个组件关闭自动布局,但您必须为整个情节提要关闭它。

谁能建议我该怎么做?我已经读到这是一个主要问题,有些人称它为新自动布局的“错误”。

我只是遇到了这个问题,我需要一些帮助

如果有人有任何建议或可以指出我正确的方向,将不胜感激。谢谢!

-亨利

4

1 回答 1

3

解决此问题的最简单方法是使用以下代码以编程方式创建图像以删除自动布局。由于具有自动布局的苹果“错误”,您无法设置image.translatesAutoresizingMaskIntoConstraints = YES是否使用 IB 将图像添加到视图中。因为你会得到一个错误说,“ Unable to simultaneously satisfy constraints

因此,您需要以编程方式执行此操作,因为 IB 添加了约束而您不需要任何约束。

UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
    image.image = [UIImage imageNamed:@"gorilla_red.png"];
    image.translatesAutoresizingMaskIntoConstraints = YES;
    [self.view addSubview:image];
于 2013-06-20T19:42:03.340 回答