我目前有一个 view controller
,它由一个 Navigation bar
和一个 UIView
组成,它有两个 UIButtons
添加为 subview 。然后在容器 UIView
底部开始的下方有一个 UITableView
。
目前,当用户滚动 UITableView
时,它会移动到 UIView
和 UIButtons
后面。我实际上想要发生的是 UIView
和 UIButtons
随表格 View 向上移动,但仅增加它们的高度值,在本例中为 58 像素。流程会是这样的……
1) 表格滚动,UIView
随之移动前 58 个像素。
2) 用户继续滚动表格,但 UIView
将自己“固定”在 导航栏
下的 View 之外。
3) 当用户向下滚动表格时,UIView
会被拾取并拖回到 View 中。我相信新的 Facebook 应用程序在时间轴上做了类似的事情。
我不想将 UIView
设置为表格的 TableHeaderView
,因为我还有一个下拉刷新,它位于按钮上方,看起来糟糕的。我试过使用表的底层 scrollview
的 contentOffset
属性,但遇到了障碍。
任何关于从哪里开始的建议都将不胜感激。
谢谢
编辑:我更进一步并使用此代码移动 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/