gpt4 book ai didi

ios - 在使用 LargeTitle 和带有 TableView 的分段控件时遇到问题

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:05 26 4
gpt4 key购买 nike

示例项目可以在 https://github.com/SRowley90/LargeTitleIssueTestiOS 找到

我试图在 iOS 应用程序的大标题下方放置一个分段控件。我有一个 UIToolbar,里面包含分段控件。

向上滚动时,titletoolbar 的行为符合预期。

当向下滚动导航栏时是正确的,但它不会将 UITabBar 或 UITableView 向下推,这意味着标题位于分段控件上方,如下图所示。

我很确定这与我设置的约束有关,但我不知道是什么。

  • TabBar 固定在顶部、左侧和右侧。
  • TableView 固定在底部、左侧和右侧。
  • tableView 垂直固定在 TabBar 上

我设置了位置 UITabBarDelegate 方法:

func position(for bar: UIBarPositioning) -> UIBarPosition {
return .topAttached
}

enter image description here

enter image description here

enter image description here

最佳答案

tableView 委托(delegate)到某处:tableView.delegate = self

重写 scrollViewDidScroll 并更新 toolbar 位置外观(因为真实位置不应该根据具有良好的弹跳效果而改变。


extension ViewController: UIScrollViewDelegate {
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
var verticalOffset = scrollView.contentOffset.y + defaultNavigationBarHeight

if scrollView.refreshControl?.isRefreshing ?? false {
verticalOffset += 60 // After is refreshing changes its value the toolbar goes 60 points down
print(toolbar.frame.origin.y)
}

if verticalOffset >= 0 {
toolbar.transform = .identity
} else {
toolbar.transform = CGAffineTransform(translationX: 0, y: -verticalOffset)
}
}
}

您可以在应用转换之前使用以下检查,以使其对默认 iOS 样式更加可靠和自然:

if #available(iOS 11.0, *) {
guard let navigationController = navigationController else { return }
guard navigationController.navigationBar.prefersLargeTitles else { return }
guard navigationController.navigationItem.largeTitleDisplayMode != .never else { return }
}

关于ios - 在使用 LargeTitle 和带有 TableView 的分段控件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52887893/

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