2013-06-20 1 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

//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; 
} 

Я понимаю, что самое простое решение было бы отключить авто-макета но вызывает проблемы в остальной части потому что в раскадровках вы не можете включить автоматическую компоновку для одного компонента, но вы должны отключить его для всей раскадровки.

Может кто-нибудь посоветует мне, что делать? Я прочитал, что это серьезная проблема, и некоторые называют ее «ошибкой» с новой автоматической компоновкой.

Я просто проблемы с этим, и мне нужна помощь

Если у кого есть какие-либо предложения или может мне точку в правильном направлении, он будет высоко ценится. Благодаря!

-Генри

ответ

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]; 

 Смежные вопросы

  • Нет связанных вопросов^_^