Как я могу сделать UIScrollView
прокрутку вниз в моем коде? Или в более общем смысле, в любой точке подпредставления?
298
Как я могу сделать UIScrollView
прокрутку вниз в моем коде? Или в более общем смысле, в любой точке подпредставления?
Вы можете использовать setContentOffset:animated:
функцию UIScrollView для прокрутки к любой части представления содержимого. Вот некоторый код, который будет прокручиваться вниз, при условии, что ваш scrollView self.scrollView
:
CGPoint bottomOffset = CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.bounds.size.height + self.scrollView.contentInset.bottom);
[self.scrollView setContentOffset:bottomOffset animated:YES];
Надеюсь, это поможет!
CGPoint bottomOffset = CGPointMake(0, self.scrollView.contentSize.height - self.scrollView.bounds.size.height + self.scrollView.contentInset.bottom);
contentSize
ниже, чемbounds
. Так должно быть так:scrollView.setContentOffset(CGPointMake(0, max(scrollView.contentSize.height - scrollView.bounds.size.height, 0) ), animated: true)
let bottomOffsetY = max(collectionView.contentSize.height - collectionView.bounds.height + collectionView.contentInset.bottom, 0)
Быстрая версия принятого ответа для легкого копирования копии:
источник
Самое простое решение:
источник
Просто улучшение существующего ответа.
Он также заботится о нижней вставке (если вы используете ее для настройки вида прокрутки, когда клавиатура видна)
источник
Быстрая реализация:
используй это:
источник
Неверно задано смещение содержимого по высоте размера содержимого: оно прокручивает нижнюю часть содержимого до верхней части представления прокрутки и, таким образом, скрывается.
Правильное решение состоит в том, чтобы прокрутить нижнюю часть содержимого до нижней части представления прокрутки, например, так (
sv
это UIScrollView):источник
if (sv.contentOffset.y + csz.height > bsz.height) {
?setContentOffset:
команда, которая важна.Решение Swift 2.2 с
contentInset
учетомЭто должно быть в расширении
Обратите внимание, что вы можете проверить, если
bottomOffset.y > 0
перед прокруткойисточник
Что если
contentSize
ниже чемbounds
?Для Свифта это:
источник
Пролистать наверх
Прокрутить до низа
источник
Я также нашел другой полезный способ сделать это в случае, если вы используете UITableview (который является подклассом UIScrollView):
источник
Использование
setContentOffset:animated:
функции UIScrollView для прокрутки вниз в Swift.источник
Похоже, что все ответы здесь не приняли во внимание безопасную область. Начиная с iOS 11, в iPhone X появилась безопасная зона. Это может повлиять на scrollView
contentInset
.Для iOS 11 и выше, чтобы правильно прокрутить до конца с включенным содержимым. Вы должны использовать
adjustedContentInset
вместоcontentInset
. Проверьте этот код:contentOffset.x
):Ссылки:
источник
С (необязательно)
footerView
иcontentInset
, решение:источник
Swift:
Вы можете использовать расширение как это:
Использование:
источник
Валдыр, надеюсь, это тебе поможет
источник
Категория на помощь!
Добавьте это к общему заголовку утилиты где-нибудь:
А затем к этой реализации утилиты:
Затем реализуйте его, где хотите, например:
источник
Для горизонтального ScrollView
Если я вам нравлюсь, у вас есть Horizontal ScrollView и вы хотите прокрутить его до конца (в моем случае до самого правого), вам нужно изменить некоторые части принятого ответа:
Objective-C
стриж
источник
Если вы как-то измените scrollView contentSize (например, добавьте что-то в stackView, которое находится внутри scrollView), вы должны вызвать
scrollView.layoutIfNeeded()
перед прокруткой, в противном случае он ничего не делает.Пример:
источник
Хороший способ обеспечить видимость нижней части вашего контента - использовать формулу:
Это гарантирует, что нижний край вашего контента всегда находится у нижнего края представления или над ним.
MIN(0, ...)
Требуется потому , чтоUITableView
(и , вероятноUIScrollView
) обеспечивает ,contentOffsetY >= 0
когда пользователь пытается прокручивать заметно щелкатьcontentOffsetY = 0
. Это выглядит довольно странно для пользователя.Код для реализации этого:
источник
Если вам не нужна анимация, это работает:
источник
В то время как
Matt
решение кажется мне правильным, необходимо учитывать также вкладку представления коллекции, если она была настроена.Адаптированный код будет:
источник
В скором времени:
источник
Решение прокрутить до последнего элемента таблицы.
Свифт 3:
источник
Не работает для меня, когда я пытался использовать его в
UITableViewController
наself.tableView
(iOS 4.1)
, после добавленияfooterView
. Он прокручивается за границы, показывая черный экран.Альтернативное решение:
источник
источник
Я обнаружил, что
contentSize
это на самом деле не отражает фактический размер текста, поэтому при попытке прокрутки вниз он будет немного отключен. Лучший способ для определения фактического размера контента на самом деле использовать вNSLayoutManager
«SusedRectForTextContainer:
метода:Чтобы определить, сколько текста на самом деле отображается в
UITextView
, вы можете рассчитать его, вычтя вставки текстового контейнера из высоты рамки.Тогда становится легко прокручиваться:
Некоторые цифры для справки о том, что разные размеры представляют для пустого
UITextView
.источник
Расширьте UIScrollView, чтобы добавить метод scrollToBottom:
источник
Xamarin.iOS версия принятого ответа
источник
Версия Xamarin.iOS для
UICollectionView
принятого ответа для простоты копирования и вставкиисточник