在iOS6中使用自动布局进行旋转和缩放
这是一个问题,我已经有很长一段时间了。随着新的iOS6和自动布局,我的手势识别器“游戏”不再工作 我用故事板创建了一个应用程序,在其中一个选项卡上有一个小游戏应用程序,用户必须在5像素、5%大小和5度范围内缩放、旋转和平移另一个图像。自动布局的问题是,当旋转和缩放游戏图像时,图像“跳”回起始位置,笨拙地旋转,而不是围绕中心旋转 下面是我处理旋转和缩放手势的方法 旋转在iOS6中使用自动布局进行旋转和缩放,ios,objective-c,rotation,scale,autolayout,Ios,Objective C,Rotation,Scale,Autolayout,这是一个问题,我已经有很长一段时间了。随着新的iOS6和自动布局,我的手势识别器“游戏”不再工作 我用故事板创建了一个应用程序,在其中一个选项卡上有一个小游戏应用程序,用户必须在5像素、5%大小和5度范围内缩放、旋转和平移另一个图像。自动布局的问题是,当旋转和缩放游戏图像时,图像“跳”回起始位置,笨拙地旋转,而不是围绕中心旋转 下面是我处理旋转和缩放手势的方法 旋转 //rotation gesture recognizer response - (void)respondToRotateGes
//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;
}
我确实意识到,最简单的解决方案是关闭自动布局,但这会导致故事板的其余部分出现问题,因为在故事板中,不能为一个组件打开自动布局,但必须为整个故事板关闭自动布局
谁能告诉我该怎么办?我已经读到,这是一个主要问题,一些人称之为新的自动布局的“错误”
我只是有问题,我需要一些帮助
如果有人有任何建议或能给我指出正确的方向,我将不胜感激。谢谢
-Henry最简单的方法是使用以下代码以编程方式创建图像以删除自动布局。由于苹果的自动布局“缺陷”,如果使用IB将图像添加到视图中,则无法设置
image.translatesAutoResizezingMaskintoConstraints=YES
。因为您将得到一个错误,即,“无法同时满足约束”
”
因此,您需要以编程方式执行此操作,因为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];