1

Я пытаюсь использовать UIPanGestureRecognizer, чтобы перевернуть UIView. Я использую ниже код для обработки листать вид,UIView flipping by UIPanGestureRecognizer

- (void)handlePan:(UIPanGestureRecognizer*)gesture{ 

    CGPoint translation = [gesture translationInView:self.view]; 

    NSLog(@"PAN X VALUE %f", translation.x); 

    double percentageOfWidth = translation.x/(gesture.view.frame.size.width/2); 

    float angle = (percentageOfWidth * 100) * M_PI_2/180.0f; 

    CALayer *layer = testView.layer; 
    CATransform3D flipTransform = CATransform3DIdentity; 
    flipTransform.m34 = -0.002f; 

    flipTransform = CATransform3DRotate(flipTransform, angle, 0.0f, 1.0f, 0.0f); 
    layer.transform = flipTransform; 

} 

Моя проблема когда я панорамирование, иногда есть некоторые быстрые Jumpings случаются, я считаю, то потому что значение translation.x (PAN X VALUE) перескакивает с нескольких точек впереди , В моем случае мне нужно, чтобы это было очень гладко.

Любая помощь очень ценится.

Заранее спасибо.

+0

Некоторые подобные вопросы могут ответить вам: Http: //stackoverflow.com/questions/9740821/uipangesturerecognizer-not-moving-object-smoothly http://stackoverflow.com/questions/14264804/uipangesturerecognizer-move-view-instantly – Joiningss

+0

Выше ответ мне не помог. И все же спасибо за ссылку. –

ответ

0

Вы можете использовать метод gestureRecognizerShouldBegin, который может ограничить чувствительность UIPanGestureRecognizer.

Пример:

- (BOOL)gestureRecognizerShouldBegin:(UIPanGestureRecognizer *)panGestureRecognizer { 
    CGPoint translation = [panGestureRecognizer translationInView:self.view]; 
    return fabs(translation.y) < fabs(translation.x); 
} 
+0

Спасибо за ответ @Mutawe, но это не решает мою проблему, проверьте журнал «PAN X VALUE», когда вы проведите пальцем по экрану. Он перескакивает от нескольких значений. Например, от 1.0 до 10.0, а затем снова 10.4, 10.8 и т. Д. –

0

Вот как я решил эту проблему для вращения куба - просто возьмите количество тащили и делить:

- (void)panHandle:(UIPanGestureRecognizer*)recognizer; 
{ 
    if ([recognizer state] == UIGestureRecognizerStateBegan) 
    { 
     CGPoint translation = [recognizer translationInView:[self superview]]; 
     _startingX = translation.x; 
    } 
    else if ([recognizer state] == UIGestureRecognizerStateChanged) 
    { 
     CGPoint translation = [recognizer translationInView:[self superview]]; 
     CGFloat angle = -(_startingX - translation.x)/4; 
     //Now do translation with angle 
     _transitionContainer.layer.sublayerTransform = [self->_currentMetrics asTransformWithAngle:angle]; 
    } 
    else if ([recognizer state] == UIGestureRecognizerStateEnded) 
    { 
     [self transitionOrReturnToOrigin]; 
    } 
} 
+0

Могу ли я увидеть ваш переход из-за обратного тока? Благодаря! –