根据内容偏移向上/向下对NavigationBar进行动画处理

时间:2020-05-03 14:40:53

标签: ios swift uinavigationcontroller uinavigationbar scrollview

我想实现Twitter的导航栏动画。当您向上滚动(表视图或集合视图)时,导航栏会随内容一起动起来,然后固定到“安全区域插图”。当内容向下滚动时,它会向下动画。

到目前为止,我有一个导航栏,它的动画使我的“表视图”向上滚动,但仅在整个列表到达顶部时才向下滚动。我该如何添加以下功能?

  1. 将导航栏底部固定到安全区域插图
  2. 使导航栏动画化,当用户向下滚动时返回

工作代码

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        // Safe Area Insets
        let topAreaInset: CGFloat = UIApplication.shared.windows.filter{$0.isKeyWindow}.first?.safeAreaInsets.top ?? 0
        // Nav Bar Height
        let navigationBarHeight: CGFloat = navigationController?.navigationBar.frame.height ?? 0
        // Total Offset
        let yOffset: CGFloat = scrollView.contentOffset.y + navigationBarHeight + topAreaInset
        // Move NavigationBar
        navigationController?.navigationBar.transform = .init(translationX: 0, y: min(0, -yOffset))
    }

代码示例

navigation_bar_example

0 个答案:

没有答案