Как всегда прокручивать 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];
Есть ли менее хакерский способ сделать это?
Ответы
Ответ 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