2013-02-25 4 views
0

Я несколько рисунков на моей настраиваемое представление, чтобы пользователи могли повернуть егоПоворот пользовательского вида?

viewContorller.m:

-(void)setMyView:(myView *)myView { 
... 
    [self.faceView addGestureRecognizer:[[UIRotationGestureRecognizer alloc] initWithTarget:faceView action:@selector(rotate:)]]; 
... 
} 

faceView.m

- (void)rotate:(UIRotationGestureRecognizer *)gesture 
{ 
    if (gesture.state == UIGestureRecognizerStateChanged) { 
     self.transform = CGAffineTransformMakeRotation(gesture.rotation); 
     gesture.rotation = 0; 
    } 
} 

Это просто не будет работать, но вполне тряски?

ответ

0

Используйте следующий код, а также добавьте UIGestureRecognizerDelegate в класс viewController.h.

-(void)setMyView:(myView *)myView { 
//... 
     UIRotationGestureRecognizer* rotateRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotate:)]; 
     rotateRecognizer.delegate = self; 
     [self.faceView addGestureRecognizer:rotateRecognizer]; 

//... 
} 

Я думаю, это будет полезно для вас.

0

Хорошо, проблема с методом циклического сдвига, попробуйте этот код,

- (void)rotate:(UIRotationGestureRecognizer *)gesture 
{ 
    if (gesture.state == UIGestureRecognizerStateChanged) { 
     self.transform = CGAffineTransformRotate(self.transform, [gesture rotation]); 
     gesture.rotation = 0; 
    } 
} 
+0

Пробовал это раньше, он масштабируется, когда он вращается, как его решить? – PlusA

0

Используйте этот код, чтобы повернуть вид, включить userinteraction и мульти сенсорный включить на просмотре.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotatePiece:)]; 
    [self.myview addGestureRecognizer:rotationGesture]; 
} 

- (void)rotatePiece:(UIRotationGestureRecognizer *)gestureRecognizer 
{ 
    [self adjustAnchorPointForGestureRecognizer:gestureRecognizer]; 

    if ([gestureRecognizer state] == UIGestureRecognizerStateBegan || [gestureRecognizer state] == UIGestureRecognizerStateChanged) { 
     [gestureRecognizer view].transform = CGAffineTransformRotate([[gestureRecognizer view] transform], [gestureRecognizer rotation]); 
     [gestureRecognizer setRotation:0]; 
    } 
} 

- (void)adjustAnchorPointForGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer 
{ 
    if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
     UIView *piece = gestureRecognizer.view; 
     CGPoint locationInView = [gestureRecognizer locationInView:piece]; 
     CGPoint locationInSuperview = [gestureRecognizer locationInView:piece.superview]; 

     piece.layer.anchorPoint = CGPointMake(locationInView.x/piece.bounds.size.width, locationInView.y/piece.bounds.size.height); 
     piece.center = locationInSuperview; 
    } 
} 

Этот код из яблок образец кода touches.

+0

Он масштабируется, когда он вращается. – PlusA

+0

Я не понимаю, что сказал, не могли бы вы объяснить. – Dilip

+0

Он просто становится больше при приближении к * 90 градусов и меньше при приближении к * 45 градусов, а я вращаю его! (также получить много вещей на консоли) – PlusA

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