【发布时间】:2018-11-10 12:30:55
【问题描述】:
当使用大标题并点击状态栏以滚动到UIScrollView 或UITableView 的顶部(可能还有UICollectionView,尚未对此进行测试)时,它总是有点过头了。
我在TableView 上启用了刷新,当点击状态栏时,它会显示为这样并保持这种状态,直到我点击屏幕。
我在另一个ViewController 中有一个ScrollView,如果我点击那里的状态栏,它也会滚动有点太远,使导航栏太高。当我点击某处或滚动一点点时,这也会恢复正常。
这也只会在我激活大标题时发生,使用普通标题一切正常。
任何想法如何解决这个问题?
如何重新创建:
- 创建一个新项目,其中包含一个导航控制器和一个
UIViewController,其中包含一个TableView。 - 将导航控制器设置为首选大标题。关闭半透明。在
UIViewController上设置标题 - 在
TableView上设置约束以固定到ViewController的边缘 - 在
ViewController中为TableView创建出口 - 实现委托并设置行数,例如 100
- 启动应用程序
- 向下滚动,使大标题变为普通标题
- 点击状态栏,
tableView滚动到顶部
现在标题不在应有的位置,如果您现在向上或向下滚动一点点,它会迅速回到正常位置。
ViewController代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
}
extension ViewController: UITableViewDelegate, UITableViewDataSource {
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "TestCell", for: indexPath)
return cell
}
}
【问题讨论】:
-
我创建了一个新项目并放置了大标题并添加了一个刷新控件,在 TableView 中添加了 100 个项目,但我无法重现您的错误。
-
@Serj 哦,很奇怪,这并不是我在视图控制器中做了很多可能导致这种情况的原因,我会尝试找出我做错了什么,谢谢!
-
如果您可以为我们提供重现该错误的方法,我们将非常乐意提供帮助。这是有关如何执行此操作的指南stackoverflow.com/help/mcve
-
@Serj 添加了重新创建的步骤,从头开始,我仍然遇到同样的问题
-
@Fogmeister 添加(对于从头开始的新项目,因为它也在那里发生,不过它只是基本代码)
标签: ios swift uinavigationbar statusbar large-title