2009-08-24 11 views
2

Ich habe eine UITextView, die eine Menge von Inhalten (zB Kreditsicht) hat, und ich mag eine automatische Scrollen Ansicht für sie (so etwas wie die Credits-Seite für Firefox) schaffen, wo sie automatisch die Namen scrolltWie erstelle ich eine animierte Credits-Seite?

I haben die folgende versucht, aber es ist nicht glatt, und ich benötige es auch automatisch geschehen, wenn der Benutzer

CGPoint scrollPoint = textView.contentOffset; 

scrollPoint.y= scrollPoint.y+10; 

[textView setContentOffset:scrollPoint animated:YES]; 

Jede mögliche Anleitung zu dieser Ansicht geht?

Antwort

1

Da UITextView eine Unterklasse von UIScrollView ist, können Sie die Methode scrollRectToVisible:animated: verwenden, um mit Animation zu einem beliebigen Punkt zu blättern.

Der Beispielcode PageControl demonstriert seine Verwendung (obwohl er horizontal gescrollt wird).

0

Bisher habe ich dies getan, aber noch ist es nicht glatt ...

Irgendwelche Vorschläge?

- (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

Weder scrollRectToVisible: animated: noch setContentOffset: animated: haben eine Eigenschaft zu steuern, um die Geschwindigkeit oder Dauer, in dem die Animation stattfindet, so werden beide bewegen ziemlich schnell zum Zielpunkt. Sie sind keine guten Lösungen für so etwas wie Credits, die langsam scrollen sollten.

Verwenden UIView animateWithDuration: und dann eine contentOffset im Animationsblock zu übergeben, ist wahrscheinlich der beste Weg, dies zu tun. Es gibt jedoch einen Fehler, der Text oben klammert, wenn die Länge des Textes zu lang ist (sogar in iOS 10.0 SDK). Es gibt zwei praktikable Workarounds für diesen hier besprochenen Fehler:

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