2012-02-25 75 views
26

我有一个UIScrollViewscrollview.contentSize设置为UIScrollView中所有子视图的高度。当contentSize的高度大于UIScrollView的高度时,拖动视图时它会完全滚动。当我拖动视图时,当contentSize的高度小于UIScrollView的高度时,没有任何事情发生。如何始终使UIScrollView可滚动?

我认为这是标准的行为,因为没有什么可滚动的。但我想,UIScrollView无论如何正在移动一点。

一个可能的解决方案是确保,该contentSize的高度永远比frame.height加上小幅度(即5像素)少:

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]; 

有没有少的hackish办法做到这一点?

+0

你只是希望它的反弹? – jrtc27 2012-02-25 17:36:41

+0

我假设你已经尝试手动将'scrollEnabled'设置为'YES',对吧? – dasblinkenlight 2012-02-25 17:39:17

+0

是的,我只是想让它反弹 - 是的,'scrollEnabled = YES'不起作用。 – dhrm 2012-02-25 18:05:47

回答

71

上有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通过检查“弹跳平铺”设置和/或“垂直弹跳”框(S):

enter image description here

+4

请注意,除了“水平反弹”或“垂直反弹”之外,还必须检查独奏“反弹”复选框。 – 2016-01-25 00:05:27