gpt4 book ai didi

ios - UITableView 部分索引针对 iOS 7 中的错误单元格,顶行隐藏在导航栏下方

转载 作者:可可西里 更新时间:2023-11-01 05:35:49 25 4
gpt4 key购买 nike

我有一个带有 UITableView 的应用程序,它通过 NSFetchedResultsController 提供数据。 TableView 按字母顺序排序,并按首字母划分为多个部分。

在我的手机上升级到 iOS 7 时,我注意到部分索引标题无法正常工作:

行动:点击部分索引标题“M”可将列表滚动到以字母 M 开头的项目。

预期结果:表格 View 滚动到 M 部分中的第一项,部分标题保持可见。

实际结果:表格 View 滚动到 M 部分中的第二个 项目,部分标题不可见。第一项存在,但就在可见框上方。

在 iOS 6 上,一切都按预期工作。

旁注,顶行上方和底行下方的橡皮筋效果也有奇怪的行为,通过“拉伸(stretch)”橡皮筋,我可以看到第一行,但一旦我松开它,第一行再次滚动到屏幕外。对于最后一行也是如此。

更新

这很可能是由于从 Xcode 4.6 自动布局迁移到 Xcode 5 自动布局造成的,我听说这不兼容。也许某些约束变坏了?我仍在努力寻找它的原因。

Interface Builder 中的场景由一个包含两个 subview 的 UIView 组成——两个 UITableView 彼此重叠。通过导航栏顶部的 UISegmentedControl 切换两个 View 中的哪一个可见。底部有一个标签栏。

我在 IB 中手动布置了界面,以便它们都是全屏的,这是单独完成的,即没有约束指定相同的宽度/高度等。我使用的约束没有;自动布局建议的约束;并且我还尝试按照 @duci9y 的建议在两个 TableView 上制作 contentInsets。

按照@Popara 的建议,导航栏设置为不透明。

尾注

如果我能理解如何将表格 View 设置为全屏,除了缩小以确保它们不会覆盖导航栏和标签栏。

最佳答案

对我来说,这听起来不像是自动布局问题。在包含 TableView 的 View Controller 中,在 viewDidLoad 中运行 self.automaticallyAdjustsScrollViewInsets = YES;

表格 View Controller 是否被推送到导航 Controller 上?那么这就是您需要做的所有事情。

如果没有,您需要阅读属性 edgesForExtendedLayouttopLayoutGuide。如果您的 View Controller 包含自己的导航栏,则后者是您需要覆盖的内容。

topLayoutGuide 告诉您的 View Controller 任何 ScrollView 应该插入多少顶部内容(这适用于 TableView ,因为它们继承自 ScrollView )。由于在 iOS7 上,您的表格 View 位于导航栏后面(因为它是半透明的),因此必须将其顶部布局指南设置为刚好位于导航栏下方。

如果你的 View 层次结构比较复杂( TableView 不是 View Controller View 的直接 subview ),那么你可以手动设置内容插入:

tableView.contentInset = UIEdgeInsetsMake(CGRectGetMaxY(navigationBar.frame), 0, 0, 0);

关于ios - UITableView 部分索引针对 iOS 7 中的错误单元格,顶行隐藏在导航栏下方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20105897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com