Как мне создать страницу с анимированными кредитами? - PullRequest
2 голосов
/ 24 августа 2009

У меня есть UITextView, в котором много контента (например, представление кредита), и я хочу создать для него представление с автоматической прокруткой (что-то вроде страницы кредитов для Firefox) где он автоматически прокручивает имена

Я пробовал следующее, но это не гладко, и я также требую, чтобы это происходило автоматически, когда пользователь переходит к этому виду

CGPoint scrollPoint = textView.contentOffset;

scrollPoint.y= scrollPoint.y+10;

[textView setContentOffset:scrollPoint animated:YES];

Любое руководство?

Ответы [ 3 ]

1 голос
/ 24 августа 2009

Поскольку UITextView является подклассом UIScrollView, вы можете использовать его метод scrollRectToVisible:animated: для прокрутки с анимацией к любой точке, которую вы хотите.

Пример кода PageControl демонстрирует его использование (хотя он прокручивается горизонтально).

0 голосов
/ 25 сентября 2016

Ни scrollRectToVisible: animated:, ни setContentOffset: animated: не имеют свойства для управления скоростью или продолжительностью , в которой происходит анимация, поэтому оба будут довольно быстро прокручиваться к точке назначения. Они не являются хорошими решениями для чего-то вроде кредитов, которые следует прокручивать медленно.

Использование UIView animateWithDuration:, а затем передача contentOffset в блоке анимации, вероятно, лучший способ сделать это. Тем не менее, существует ошибка, которая обрезает текст сверху, если длина текста слишком велика (даже в iOS 10.0 SDK). Обсуждается здесь два возможных обходных пути для этой ошибки:

UIView.animateWithDuration для смещения содержимого UITextfield: он обрезает текст (Swift)

0 голосов
/ 24 августа 2009

Пока что я это сделал, но все же это не гладко ...

Есть предложения?

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...