如何创建App Store风格的导航栏

问题描述 投票:0回答:1

我正在尝试重新创建 App Store 导航栏动画。我目前正在做的是根据滚动位置调整导航栏的 alpha。

问题是,当您向后滑动时,导航栏不会出现在上一个视图中,因此我在 viewWillDissapear 中将 alpha 设置回 1(如 gif 所示,这效果不佳)。

关于后退按钮,如果更改导航栏的 alpha,后退按钮也会受到影响。当导航栏不可见时,Apple 有一个不同的后退按钮(带箭头的圆圈),并且当导航栏出现时,该按钮会随着动画消失,并且出现默认的后退按钮。我不确定他们是否只是覆盖了一个新的。

这个问题之前已被问过,但接受的答案是使导航栏透明,然后在滚动时更改其不透明度。这不会产生相同的效果,因为默认导航栏不是白色而是半透明的,并且您还会丢失底部的边框线。

斯威夫特5

    override func viewWillDisappear(_ animated: Bool) {
        navigationController?.navigationBar.alpha = 1
    }
    

    
    func scrollViewDidScroll(_ scrollView: UIScrollView) {

        let currentVerticalOffset = scrollView.contentOffset.y
        
        var percentageVerticalOffset = CGFloat() //currentVerticalOffset / maximumVerticalOffset
        

        if currentVerticalOffset > collectionView.frame.size.height {
            percentageVerticalOffset = currentVerticalOffset / currentVerticalOffset
            self.title = "The Barn Owl"
            //self.navigationItem.setHidesBackButton(false, animated: true)
        } else {
            percentageVerticalOffset = currentVerticalOffset / collectionView.frame.size.height
            //self.navigationItem.setHidesBackButton(true, animated: true)
            self.title = ""
        }
        

//        let color = UIColor.init(red: 255/255.0, green: 255/255.0, blue: 255/255.0, alpha: percentageVerticalOffset)
//        navigationController?.navigationBar.backgroundColor = color
        
        navigationController?.navigationBar.alpha = percentageVerticalOffset 
        
    }

App Store Example

enter image description here

ios swift animation uinavigationbar
1个回答
0
投票

您找到解决方案了吗?我也想做同样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.