我有一个scrollview,里面有20个UItextviews。 scrollview无法正常工作。我在viewdidload中设置了以下内容。
self.MainScroll.contentSize = CGSizeMake(320, 1800);
仍然不滚动。但是,如果我垂直弹跳,它就会反弹。我的scrollview是尺寸为320 * 600的主UIview的子代。请指导如何启用滚动!!
答案 0 :(得分:102)
有两种方法可以让滚动工作。
方法1(带代码):
1)将UIScrollView
固定到其父视图的两侧,如下所述。
2)在viewDidLayoutSubviews
:
- (void)viewDidLayoutSubviews {
self.MainScroll.contentSize = CGSizeMake(320, 1800);
}
方法2(纯IB,无需代码):
1)如果使用contentSize
,则不需要设置AutoLayout
。您需要将UIScrollView
固定到父视图,如下所述:
2)然后在UIScrollView中添加另一个UIView
作为内容视图并将其固定到UIScrollView并移动此内容视图中的所有控件:
3)将内容视图固定到其父滚动视图,如下所述:
4)将你的UIViewController的模拟指标设置为自由形式(这很重要):
5)将您的内容UIView
调整到所需的高度(显然也很重要):
解释UIScrollView和AutoLayouts的Apple文章: https://developer.apple.com/library/content/technotes/tn2154/_index.html
答案 1 :(得分:-1)
延迟一段时间后更新内容大小,如下所示。
- (void)viewDidLayoutSubviews {
[self performSelector:@selector(updateContentSize)
withObject:nil
afterDelay:0.25];
}
-(void)updateContentSize{
UIView *viewLast = [viewContent viewWithTag:100];
scrollViewAd.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, CGRectGetMaxY(viewLast.frame));
}