2009-08-24 7 views
2

J'ai un UITextView qui a beaucoup de contenu (par exemple vue de crédit), et je veux créer une vue de défilement automatique pour elle (quelque chose comme la page des crédits pour Firefox) où il fait défiler automatiquement les nomsComment créer une page de crédits animés?

I ont essayé ce qui suit, mais ce n'est pas lisse, et je rechercherai aussi que cela se produise automatiquement lorsque l'utilisateur passe à ce point de vue

CGPoint scrollPoint = textView.contentOffset; 

scrollPoint.y= scrollPoint.y+10; 

[textView setContentOffset:scrollPoint animated:YES]; 

Toute orientation?

Répondre

1

Depuis UITextView est une sous-classe de UIScrollView, vous pouvez utiliser sa méthode scrollRectToVisible:animated: pour faire défiler avec l'animation à tout point que vous souhaitez.

L'exemple de code PageControl illustre son utilisation (bien qu'il défile horizontalement).

0

Jusqu'à présent, je l'ai fait, mais encore il est pas lisse ...

Toutes les suggestions?

- (void)viewDidLoad { 

    [super viewDidLoad]; 

[self run]; 

} 

-(void)run{ 

    CGRect Frame1 = CGRectMake(5.0,5.0, 100.0,400.0); 
    CGPoint scrollPoint = textView.contentOffset; 

    scrollPoint.y= scrollPoint.y+100; 

    [textView setContentOffset:scrollPoint animated:YES]; 

    [textView scrollRectToVisible:Frame1 animated:YES]; 
    NSTimer *time; 
    time=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(run) userInfo:nil repeats:YES]; 

} 
0

Ni scrollRectToVisible: animated: ni setContentOffset: animated: ont une propriété pour contrôler la vitesse ou durée où l'animation se produit, de sorte que les deux vont défiler assez rapidement au point de destination. Ils ne sont pas de bonnes solutions pour quelque chose comme des crédits, qui devraient défiler lentement.

L'utilisation de UIView animateWithDuration: puis du passage d'un contentOffset dans le bloc d'animation est probablement le meilleur moyen de le faire. Cependant, il y a un bug qui tape le texte en haut si la longueur du texte est trop longue (même dans iOS 10.0 SDK). Il y a deux solutions de rechange viables pour ce bogue discuté ici:

UIView.animateWithDuration on UITextfield's contentoffset: It clips the text (Swift)

Questions connexes