我正面临一个问题,当在UIViewController内部嵌入的UITableView上滚动时,大标题导航栏会突然崩溃.问题似乎只发生在屏幕上向上滚动时.当在屏幕上向下滚动时,标题会平滑过渡到再次变大,但反之则不然.
如果使用UITableViewController,则不会发生此问题.
这是在UITableViewController内滚动时的正常预期行为.
当在UIViewController中使用UITableView时,这是一个破碎的,突然的转换.
以下是破坏实现的代码:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 12
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Basic", for: indexPath)
cell.textLabel?.text = "Title \(indexPath.row)"
return cell
}
}
Run Code Online (Sandbox Code Playgroud)
导航栏优先选中大标题,导航项将大标题设置为自动.
上面两个示例的代码和配置完全相同,除了一个是UITableViewController与UIViewController内的UITableView.
我还观察到,如果UITableView的内容不超过视图的高度,则不会发生破坏的行为.但是,一旦有更多的细胞可以放在屏幕上,它就会破裂.
不知道我做错了什么或者这是iOS 11的错误吗?
我在使用prefersLargeTitles和添加时遇到滚动问题UITableView.
如果我prefersLargeTitles在导航控制器中设置并且其根目录UITableViewController很好,滚动导航大标题的工作方式与我们在系统应用程序中看到的方式相同(在iOS 11+中).
但是,如果我使用a UIViewController并UITableView在其中添加a ,则滚动似乎采取不同的行为.导航栏比我实际滚动更快/更快.只要我滚动到一个只触发它的位置,它就会隐藏/显示大标题,所以我最终会有完全不同的感觉.
我有一个UITableView自定义单元格(每个单元格高度为 70px)。
我还有一个 49px UITabBar,但它隐藏了 tableView。
我尝试将此行添加到 TableViewawakeFromNib方法,但它不起作用:
self.commentsTableView.contentInset = UIEdgeInsetsMake(0, 0, 49, 0)
Run Code Online (Sandbox Code Playgroud)
知道如何解决这个问题吗?
谢谢!