gpt4 book ai didi

ios - 滚动到tableview的顶部并显示大标题iOS

转载 作者:行者123 更新时间:2023-12-01 21:59:06 25 4
gpt4 key购买 nike

我想滚动到tableView的顶部,并在我点击选项卡栏上的选项卡时在largeTitle中显示navigationBar

使用scrollToRow方法不会显示largeTitle:

extension TableViewConstroller: UITabBarControllerDelegate {
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
if tabBarController.selectedIndex == 1 {
let indexPath = IndexPath(row: 0, section: 0)
tableView.scrollToRow(at: indexPath, at: .top, animated: true)
}
}
}

我也试过
self.tableView.scrollRectToVisible(CGRect(x: 0, y: -64, width: 1, height: 1), animated: true)

有时这可行,但是如果我向下滚动 tableView,则向上滚动此方法时 navigationBar仍然折叠。

我该如何模仿tableView的 scrollsToTop属性的行为,该属性会滚动到顶部并显示 largeTitle?它动画非常流畅,并且始终显示较大的 navigationBar

最佳答案

我在UITabBarControllerDelegate中使用了这两种方法:
第二种方法搜索第一个scrollView,然后滚动到该scrollView的顶部。并且因为tableView也是scrollView,所以这种方法有效。

func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if tabBarController.selectedViewController == viewController {
if let scrollView = findScrollView(in: viewController.view) {
let desiredOffset = CGPoint(x: 0, y: -scrollView.contentInset.top - 96 + UIApplication.shared.statusBarFrame.height)
scrollView.setContentOffset(desiredOffset, animated: true)
}
}
return true
}

private func findScrollView(in view: UIView) -> UIScrollView? {
if let scrollView = view as? UIScrollView {
return scrollView
} else {
for subview in view.subviews {
if let scrollView = findScrollView(in: subview) {
return scrollView
}
}
}
return nil
}

关于ios - 滚动到tableview的顶部并显示大标题iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60638825/

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