2013-06-20 61 views
1

这是一直以来我一直在讨论的问题。随着新的iOS6和自动布局我的手势识别器“游戏”不再工作。在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; 
} 

我意识到,最简单的解决办法是关闭自动布局但在的剩下引起的问题故事板,因为在故事板中,您无法关闭一个组件的自动布局,但是您必须关闭整个故事板。

任何人都可以告诉我该怎么做?我已经读过这是一个重大问题,有些人称它为新的自动布局的“bug”。

我只是有这个问题,我需要一些帮助

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

-Henry

回答

3

解决这个问题的最简单的方法是通过编程使用下面的代码删除自动布局创建图像。由于使用自动布局的苹果“bug”,因此如果使用IB将图像添加到视图中,则无法设置image.translatesAutoresizingMaskIntoConstraints = YES。因为你会得到一个错误,说:“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];