将一个视图滑到另一个视图

问题描述 投票:0回答:1

我有一个视图控制器,顶部有页面视图控制器,底部有一个桌面视图。当我向上滚动表格视图时,我希望表格视图框架向上滑动到屏幕顶部,并在向下滚动时返回到页面控制器视图的底部。

  • 表格视图向上滑动到屏幕顶部,但表格视图单元格也会滚动。查看第一个视频链接。

我只想要更改框架,并且要查看表格视图单元格,直到它到达屏幕顶部。

video for what I achieved

video similar to what I want to achieve

在我的示例中,我尝试更改附加到scrollViewDidScroll中表视图顶部的NSLayoutConstraint。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    //the height of the pageview controller
    //the height and width of the pageview controller is the screen width.
    CGFloat yPos = self.pageViewHolder.frame.size.height;
    //content offset as I scroll
    CGFloat offset = self.tableView.contentOffset.y;
    //to place the tableview exactly below pageview controller view
    if (offset < 0) {
        offset = screenSize.height - screenSize.width;
    }
    //to place the tableview frame fixed on top of the screen
    else if (offset > yPos) {
        offset = screenSize.width;
    }

    //to slide the table view above page view by changing the NSLayoutConstraint anchored to the top of the table view and the super view.
    CGFloat difference = yPos - offset;
    self.tableViewTopGap.constant = difference;
    [self.view layoutIfNeeded];
}
ios objective-c iphone uitableview uipageviewcontroller
1个回答
0
投票

您需要在表视图上启用和禁用滚动,直到它位于屏幕顶部。

因此,在您上面发布的代码中,您正在检查if else语句中表视图的位置,您应该在那里启用和禁用滚动。

当你不希望表格视图滚动:[tableView scrollEnabled: NO];然后当它点击屏幕顶部时只需将其设置为YES

© www.soinside.com 2019 - 2024. All rights reserved.