【问题标题】:IOS - How to a have a scrollable tableview header using autolayoutIOS - 如何使用自动布局有一个可滚动的表格视图标题
【发布时间】:2017-05-10 10:43:03
【问题描述】:

我想为我的个人应用重新创建 Spotify 应用的行为。

这是一种表格视图,但标题视图是动态大小的。默认情况下,标题具有最大尺寸,但是当用户滚动表格视图上方时,标题视图会动态松动高度,直到保持其最小尺寸。 headerview 应该始终保持可见。

这是显示我希望重现的行为的 GIF:http://giftrending.com/public/upload/gifs/14827016661482701665.gif

顺便说一句,我使用带有情节提要的自动布局来设置我的视图。

感谢您的帮助!

【问题讨论】:

  • 如果可能的话,你能不能发一个 gif 来展示整个动画,很难确定使用前后图像的方法!但很可能可以通过使用 UITableViewCellUIView 来复制行为,并根据用户滚动的数量使用适当的动画!
  • 显示代码,如何确定高度。
  • spotify 应用程序可能使用了一个集合视图。

标签: ios objective-c uitableview uiscrollview storyboard


【解决方案1】:

这不是一个优化的代码,但你可以试试这样的。

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    return headerHeight;
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    CGFloat maxHeaderHeight = 400;
    CGFloat minHeaderHeight = 40;
    if (self.lastContentOffset > scrollView.contentOffset.y){
        // scrolling down
        if(headerHeight < maxHeaderHeight){
            headerHeight += scrollView.contentOffset.y;
        }
        headerHeight = MIN(headerHeight, maxHeaderHeight);
    }else if (self.lastContentOffset < scrollView.contentOffset.y){
        // scrolling up
        if (headerHeight > minHeaderHeight) {
            headerHeight -= scrollView.contentOffset.y;
        }
        headerHeight = MAX(headerHeight, minHeaderHeight);
    }
    self.lastContentOffset = scrollView.contentOffset.y;
    [self.tableView reloadData];

}

【讨论】:

  • 谢谢你,我做了一些测试,它有时有效,但并非总是如此。确实有时,特别是在桌子的极值处。您的算法未评估“返回”效果。我继续我的测试^^
猜你喜欢
  • 1970-01-01
  • 2013-06-29
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多