Как всегда сделать прокручиваемый UIScrollView? - PullRequest
27 голосов
/ 25 февраля 2012

У меня есть UIScrollView. scrollview.contentSize устанавливается на высоту всех подпредставлений в UIScrollView. Когда высота contentSize превышает высоту UIScrollView, она прекрасно прокручивается при перетаскивании вида. Когда высота contentSize меньше высоты UIScrollView, при перетаскивании вида ничего не происходит.

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

Возможное решение состоит в том, чтобы высота contentSize никогда не была меньше, чем frame.height плюс небольшое поле (т. Е. 5px):

CGSize scrollSize = self.frame.size;
int defaultHeight = self.frame.size.height + 5;
int contentHeight = self.webView.frame.origin.y + self.webView.frame.size.height;
scrollSize.height = MAX(defaultHeight, contentHeight);
[self.scrollView setContentSize:scrollSize];

Есть ли менее хакерский способ сделать это?

Ответы [ 2 ]

73 голосов
/ 25 февраля 2012

В UIScrollView есть два свойства, которые звучат так, как вы хотите:

@property(nonatomic) BOOL alwaysBounceVertical; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag vertically
@property(nonatomic) BOOL alwaysBounceHorizontal; // default NO. if YES and bounces is YES, even if content is smaller than bounds, allow drag horizontally

Просто установите один или оба из них на YES, и вы получите эффект отскока.

Это также можно установить в IB, установив флажки "Отскок по горизонтали" и / или "Отскок по вертикали":

enter image description here

1 голос
/ 03 июня 2019

В быстром:

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