我在xib
文件中有这个视图层次结构:
UIView
UIScrollView
UIView
UIView
UITableView
UIButton
让contentView
UIView
作为UIScrollView
的直接子女。我已设置其顶部,底部,前导和尾随约束来固定滚动视图。然后,由于我在运行时填充表格视图并且我事先并不知道它的高度,因此我在代码中设置了滚动视图contentSize
:
[self.scrollView setContentSize:CGSizeMake(self.contentView.frame.size.width, self.tableView.frame.size.height)];
但我不能做这项工作......我能错过什么?
答案 0 :(得分:2)
AppsDev,查看此视频,它通过故事板帮助我做了很多UIScrollView https://www.youtube.com/watch?v=UnQsFlMGDsI
也永远不会设置scrollView的contentSize,因为已经由scrollView自行决定,这就是为什么我们有AutoLayout。
我认为我们应该为uiscrollview-autolayout
答案 1 :(得分:0)
不要手动设置内容大小。相反,
contentView
的四条边限制在scrollView
的边缘。 contentView
的宽度限制为等于scrollView
的宽度。 (这样可以防止内容比scrollView
更宽。)contentView
的顶部和侧面约束到子视图的相应边缘。 contentView's
边和底部限制在tableView
的边和底部。 scrollView
内容的高度将不明确。要解决这个问题,您可以设置子项占位符高度以使Interface Builder满意,但是您还必须在运行时将其高度设置为某个位置。 现在你应该被设定。 scrollView
现在可以通过检查约束层次来计算其内容的完整高度和宽度,并且您不必手动设置其内容高度。
答案 2 :(得分:0)
我终于按照@Sana答案和this post设法完成了这项工作,以便能够滚动表格视图内容。
谢谢大家回复。
答案 3 :(得分:-1)
仅举例:
UIView *containerView = [[UIView alloc] init];
UIScrollView *scrollView = [[UIScrollView alloc] init];
[containerView addSubview:scrollView];
containerView.translatesAutoresizingMaskIntoConstraints = NO;
scrollView.translatesAutoresizingMaskIntoConstraints = NO;
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(containerView, scrollView);
[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|"
options:kNilOptions
metrics:nil
views:viewsDictionary]];
[containerView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|"
options:kNilOptions
metrics:nil
views:viewsDictionary]];
答案 4 :(得分:-1)
使用此代码我的代码可以帮助您。
-(void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self.scrollView setContentSize:CGSizeMake(self.contentView.frame.size.width, self.tableView.frame.size.height)];
}