Подтвердить что ты не робот

Как всегда прокручивать UIScrollView?

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

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

Возможное решение состоит в том, чтобы гарантировать, что высота contentSize не меньше, чем frame.hight плюс небольшой запас (например, 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];

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

4b9b3361

Ответ 1

На 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, установив флажок "Bounce Horizontally" и/или "Bounce Vertically":

enter image description here

Ответ 2

В скором времени:

scrollView.alwaysBounceVertical = true
scrollView.alwaysBounceHorizontal = true