ios - 使 UIView 与 UITableView 一起滚动,但固定到顶部不可见

标签 ios objective-c uitableview uiview scrollview

我目前有一个 view controller,它由一个 Navigation bar 和一个 UIView 组成,它有两个 UIButtons 添加为 subview 。然后在容器 UIView 底部开始的下方有一个 UITableView

目前,当用户滚动 UITableView 时,它会移动到 UIViewUIButtons 后面。我实际上想要发生的是 UIViewUIButtons 随表格 View 向上移动,但仅增加它们的高度值,在本例中为 58 像素。流程会是这样的……

1) 表格滚动,UIView 随之移动前 58 个像素。

2) 用户继续滚动表格,但 UIView 将自己“固定”在 导航栏 下的 View 之外。

3) 当用户向下滚动表格时,UIView 会被拾取并拖回到 View 中。我相信新的 Facebook 应用程序在时间轴上做了类似的事情。

我不想将 UIView 设置为表格的 TableHeaderView,因为我还有一个下拉刷新,它位于按钮上方,看起来糟糕的。我试过使用表的底层 scrollviewcontentOffset 属性,但遇到了障碍。

任何关于从哪里开始的建议都将不胜感激。

谢谢

编辑:我更进一步并使用此代码移动 UIView 的框架。

-(void) scrollViewDidScroll:(UIScrollView *)scrollView
{
    NSLog (@"Content Offset: %f", self.tableView.contentOffset.y);
    NSLog (@"Button Frame: %f", self.btnBackground.frame.origin.y);

        if (self.tableView.contentOffset.y > 0)
        {
            CGRect newFrame = self.btnBackground.frame;
            newFrame.origin.x = 0;
            newFrame.origin.y = -self.tableView.contentOffset.y;
            [self.btnBackground setFrame: newFrame];
        }  

}

现在的问题是,如果表格 View 快速滚动,scrollViewDidScroll 委托(delegate)方法不会足够快地触发。结果是,当快速滚动时,UIView 并没有完全回到原来的位置。

最佳答案

滚动内容偏移量是个好主意。此外,如果您的 TableView 只有一个部分,一种方法是创建一个代表顶级小部件的自定义标题 View 。如果有多个部分,请创建一个额外的空白部分,该部分将返回您的自定义 header 。

您可以引用这篇堆栈溢出帖子。 Customize UITableview Header Section

关于ios - 使 UIView 与 UITableView 一起滚动,但固定到顶部不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16396269/

相关文章:

ios - UICollectionView 多个单元格选择 Swift iOS

ios - [NSPlaceholderMutableString initWithString :]: nil argument exception coming after casting the UITextField

ios - RxSwift - 自动重新加载使用 Observable 初始化的 UITableView

iphone - 如何组合 View 层级以增强动画性能?

iphone - 如何以编程方式找出载波信号强度

ios - 调整 UIView 框架的大小会导致内容调整大小

iphone - 将JSON写入文件。但是你怎么读回来呢?

iOS 核心数据 : Refetch of subcategories necessary?

ios - swift 2 : UITableView 'reloadSections' method crash in iOS 9

ios - 将重新排序符号放在 UITableViewCell 的左侧