прокрутка прокрутки внизу программно - iphone - PullRequest
1 голос
/ 13 января 2011

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

scrollRectToVisible мне не поможет.Он просто прокручивается до видимого вида экрана моего iphone, но я хочу достичь нижней части содержимого scrollview.

Может кто-нибудь дать мне пример кода?

Спасибо,
Навид Батт

Ответы [ 5 ]

5 голосов
/ 19 февраля 2013

Я немного изменил решение @ jer's:

if([yourScrollView contentSize].height > yourScrollView.frame.size.height)
{
  CGPoint bottomOffset = CGPointMake(0, [yourScrollView contentSize].height - yourScrollView.frame.size.height);
  [yourScrollView setContentOffset:bottomOffset animated:YES];
}

Это позволит прокрутить содержимое до конца UIScrollView, но только тогда, когда это необходимо сделать (в противном случае вы получите странный прыжок вверх / вниз).эффект)

Кроме того, я заметил, что если вы не уменьшите высоту самого прокрутки от высоты содержимого, оно прокручивает содержимое до того места, где оно видно.

3 голосов
/ 13 января 2011

Вместо этого используйте что-то вроде этого:

CGPoint bottomOffset = CGPointMake(0, [yourScrollView contentSize].height);
[yourScrollView setContentOffset:bottomOffset animated:YES];

Если вы не хотите, чтобы это анимировалось, просто измените YES на NO.

0 голосов
/ 22 ноября 2016

Это надежнее

CGSize contentSize = scrollview.contentSize;
[scrollview scrollRectToVisible: CGRectMake(0.0,
                                            contentSize.height - 1.0,
                                            contentSize.width, 
                                            1.0)
                       animated: YES];
0 голосов
/ 16 февраля 2016

Если вам нужна версия Swift:

scrollView.setContentOffset(CGPointMake(0, max(scrollView.contentSize.height - scrollView.bounds.size.height, 0) ), animated: true)

Надеюсь, это поможет!

0 голосов
/ 31 января 2014
CGFloat yOffset = scrollView.contentOffset.y;

CGFloat height = scrollView.frame.size.height;

CGFloat contentHeight = scrollView.contentSize.height;

CGFloat distance = (contentHeight  - height) - yOffset;

if(distance < 0)
{
    return ;
}

CGPoint offset = scrollView.contentOffset;

offset.y += distance;

[scrollView setContentOffset:offset animated:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...