黑色半透明导航栏/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:动画期间的黑色半透明层

iOS 7 UITableView 使用透明的导航栏和工具栏

实现动态内容的透明模糊导航栏

IOS - 内容上的半透明导航栏

Flutter沉浸式状态栏/AppBar导航栏/仿咸鱼底部凸起导航