黑色半透明导航栏/UITableView/内容插入/滚动位置问题
Posted
技术标签:
【中文标题】黑色半透明导航栏/UITableView/内容插入/滚动位置问题【英文标题】:Black Translucent Nav Bar / UITableView / Content Inset / Scroll Position Issues 【发布时间】:2010-08-17 00:24:35 【问题描述】:我正在实现一个 UITableView,它具有沿右手尺寸的索引以及部分标题。我实际上是在实现一个股票 NSFetchedResultsController,如 Apple 文档中所述。 UITableView 包含在带有黑色半透明导航栏的 UINavigationController 中。我将顶部内容和滚动条插图设置为 44,以补偿表格的导航栏重叠。即使设置了插图,我在黑色半透明导航栏中使用 UITableView 时也遇到了一些问题,我认为这是相关的。
当我触摸索引列中的某个项目以将我带到该部分时,部分标题“挂起”在正确的位置(在导航栏正下方对接),但第一个单元格似乎向上移动了一个。我认为该表不知道导航栏重叠,因此如果标题位于窗口框架顶部但标题下方(如果有意义的话),它将定位第一个单元格。很难解释,所以我附上截图来帮助说明。隐藏的第一个“比利”应位于与节标题“B”齐平的第二个比利的位置。
(哎呀,菜鸟太大了,无法发布图片。http://dontgoplastic.com/temp/uitableview.png)
第二个问题与同一张表有关,但与 selectRowAtIndexPath:animated:scrollPosition: 有关。如果我尝试将 'UITableViewScrollPositionNone' 用于 'scrollPosition' 并将 indexPath 设置为低于当前可见屏幕的内容,它会将表格向下移动(如预期的那样),但我假设的短是 44 像素。同样,我认为表格认为单元格在视图中,但没有考虑到插图。
希望我只是忽略了一个简单的属性。
感谢您的宝贵时间
【问题讨论】:
【参考方案1】:我仍然不是 100% 出了什么问题,但我可以通过子类化 UITableView 和编辑 setContentOffset:animated: 来纠正它:
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
CGPoint newOffset = CGPointMake(contentOffset.x, contentOffset.y - 44);
[super setContentOffset:newOffset animated:animated];
希望这有助于阐明我的问题或帮助其他人找到可能的解决方案。
谢谢。
【讨论】:
以上是关于黑色半透明导航栏/UITableView/内容插入/滚动位置问题的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 UINavigationController 过渡到 UITableView:动画期间的黑色半透明层