视图控制器视图中包含的内容是:
一旦渲染,我希望此处的所有内容都在滚动视图内,以便用户可以根据需要滚动整个屏幕。请注意,scrollView
需要扩展到tableView
的整个大小才能显示其完整内容。我已尝试过不同的方法,但无法做到这一点。我会很感激任何指针或代码段来完成这项工作。
答案 0 :(得分:0)
基本上有两种方法可以做到。
第一种方法涉及您拥有的tableHeaderView
实例的UITableView
属性。您只需添加带有约束/ frame / autoresizingMask的UITableView
即可将其全屏显示。完成后,您只需(即在您的viewDidLoad
中):
UIView *headerView = [UIView new];
// Here I am supposing that you have a 200pt high view and a `self.tableView` UITableView
headerView.frame = CGRectMake(0, 0, self.tableView.frame.size.width, 200.0);
UIImageView *fixedImageView = [UIImageView new];
// configure your imageView..
[headerView addSubview:fixedImageView];
// configure labels as you want and add them to headerView as subviews
// Now set `UITableView` headerView
self.tableView.tableHeaderView = headerView;
如果您想对tableHeaderView使用AutoLayout,建议您查看this question
另一种方法是创建一个UIScrollView
,将所有内容放入其中,然后滚动它。这种方法的缺点是,如果您使用UITableView
的浮动节标题,由于tableView
将保持已修复,它们不会浮动,而父scrollView
将要滚动。
另一方面,由于您可以轻松使用约束,因此这种方法更适合AutoLayout友好。
为此,您开始在视图中添加UIScrollView
,并将所有其他视图放入其中。
请务必在scrollView
(我认为UIImageView
)和scrollView
顶部以及最后一个视图之间的第一个视图之间添加垂直间距约束(我认为UITableView
)和scrollView
底部,以避免模糊的内容大小。
你应该有类似的东西(为了简洁我省略了标签):
请注意,每个视图都在父
中UIScrollView
之后,向tableView
添加高度约束,并在视图控制器子类中添加IBOutlet
,例如:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *tableViewHeightConstraint;
现在您只需要配置此约束以反映tableView
自然高度,由其行等给出。为此,您只需以这种方式计算高度:
// Resize TableView
CGFloat height = self.tableView.contentSize.height;
self.tableViewHeightConstraint.constant = height;
现在tableView将调整大小,由于其约束,它将调整父scrollView
contentSize。
请务必在重新加载UITableView
dataSource时刷新此高度约束。