L'effet de parallaxe avec UIScrollView des sous-vues

Je suis en train de créer un effet de Parallaxe sur une UIView à l'intérieur d'un UIScrollView.
L'effet semble fonctionner, mais pas si bien.

  1. J'ai d'abord ajouter deux UIView sous-vues à un UIScrollView et définir la UIScrollViews contentSize.
  2. Le point de Vue de la somme et de créer un contentSize de {320, 1000}.
  3. Puis j'ai mis en place les éléments suivants dans scrollViewDidScroll:

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
        CGFloat offsetY = scrollView.contentOffset.y;
    
        CGFloat percentage = offsetY / scrollView.contentSize.height;
    
        NSLog(@"percent = %f", percentage);
    
        if (offsetY < 0) {
    
            firstView.center = CGPointMake(firstView.center.x, firstView.center.y - percentage * 10);
    
        } else if (offsetY > 0){
    
            firstView.center = CGPointMake(firstView.center.x, firstView.center.y + percentage * 10);
    
        }
    }

Ces lignes de code à faire créer un effet de parallaxe, mais comme le défilement continue, la vue ne retourne pas à sa position d'origine si j'ai faites défiler jusqu'à l'origine de la position de départ.

J'ai essayé de manipuler les points de vue des couches et des châssis, tous avec les mêmes résultats.

Toute Aide sera très appréciée.

  • Les montants conditionnels en pourcentage = fabs(en pourcentage);, et qui semble erroné. Comment est-il lorsque vous remplacez le conditionnel avec juste le bloc else?
  • Je n'ai pas essayé, donc pas une réponse, mais ce code semble plus prometteuse pour moi: github.com/ralfbernert/RBParallaxScrolling/blob/master/...
  • si je remplace le "si" avec le "else", lorsque j'ai jamais faites défiler vers le bas (offset = -x) le point de vue va lentement rebondir de haut.
  • J'ai ajouté une modification à ma réponse à expliquer numériquement pourquoi votre problème existe.
InformationsquelleAutor Raz | 2014-03-05