Ios 滚动ViewController内容

Ios 滚动ViewController内容,ios,objective-c,uitableview,uiscrollview,Ios,Objective C,Uitableview,Uiscrollview,我在视图控制器视图中看到的是: 固定高度的图像 少数标签 具有n行的表视图 渲染后,我希望这里的所有内容都在滚动视图中,以便用户可以根据需要滚动整个屏幕。请注意,scrollView需要扩展到tableView的整个大小才能显示其全部内容。我尝试过不同的方法,但是做不到。我希望能有任何指针或代码段来完成这项工作。基本上有两种方法 tableHeaderView 第一种方法涉及您拥有的UITableView实例的tableHeaderView属性。您可以简单地添加UITableView,并使用约束

我在视图控制器视图中看到的是:

  • 固定高度的图像
  • 少数标签
  • 具有n行的表视图
    渲染后,我希望这里的所有内容都在滚动视图中,以便用户可以根据需要滚动整个屏幕。请注意,
    scrollView
    需要扩展到
    tableView
    的整个大小才能显示其全部内容。我尝试过不同的方法,但是做不到。我希望能有任何指针或代码段来完成这项工作。

    基本上有两种方法

    tableHeaderView 第一种方法涉及您拥有的
    UITableView
    实例的
    tableHeaderView
    属性。您可以简单地添加
    UITableView
    ,并使用约束/frame/autoresizingMask将其全屏显示。完成后,您只需执行以下操作(即在
    viewDidLoad
    中):

    UIView*headerView=[UIView new];
    //在这里,我假设您有一个200磅的高视图和一个“self.tableView”UITableView
    headerView.frame=CGRectMake(0,0,self.tableView.frame.size.width,200.0);
    UIImageView*fixedImageView=[UIImageView新建];
    //配置您的imageView。。
    [headerView添加子视图:fixedImageView];
    //根据需要配置标签,并将其作为子视图添加到headerView
    //现在设置`UITableView`headerView
    self.tableView.tableHeaderView=headerView;
    
    如果您想在tableHeaderView中使用AutoLayout,我建议您查看

    动态滚动视图 另一种方法是创建一个
    UIScrollView
    ,将所有内容放入其中,然后让它滚动。这种方法的缺点是,如果对
    UITableView
    使用浮动节标题,它们将不会浮动,因为
    tableView
    将保持固定,而父
    scrollView
    将滚动

    另一方面,由于您可以轻松使用约束,这种方法对自动布局更为友好

    为此,您开始向视图中添加一个
    UIScrollView
    ,并将所有其他视图放在其中。 确保在
    scrollView
    (我假设
    UIImageView
    )和
    scrollView
    顶部之间,以及最后一个视图(我假设
    UITableView
    )和
    scrollView
    底部之间添加垂直间距约束,以避免内容大小不明确

    您应该有这样的内容(为了简洁起见,我省略了标签):

    请注意,每个视图都位于父视图
    UIScrollView

    在此之后,向
    表视图
    添加高度约束,并向视图控制器子类添加
    IBOutlet
    ,如下所示:

    @property (weak, nonatomic) IBOutlet NSLayoutConstraint *tableViewHeightConstraint;
    
    现在,您只需配置此约束以反映由行等给出的
    tableView
    自然高度。为此,您只需通过以下方式计算高度:

    // Resize TableView
    CGFloat height = self.tableView.contentSize.height;
    self.tableViewHeightConstraint.constant = height;
    
    现在,tableView将调整大小,并且由于其限制,它将调整父级
    scrollView
    contentSize

    只要确保在重新加载
    UITableView
    数据源时刷新此高度约束即可