如何为导航栏(如AppStore应用程序详细信息页面)设置动画?

时间:2019-06-28 11:31:11

标签: ios swift app-store navigationbar

导航栏(如AppStore)

enter image description here

首先透明的导航栏,当应用程序向上滚动时,导航栏变为可见。

请在添加了此问题的Gif文件中检查效果

2 个答案:

答案 0 :(得分:0)

首先将导航栏设置为透明,如下所示

// Makes the navigation bar transparent
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
navigationController?.view.backgroundColor = UIColor.clear

现在使用UIScrollViewDelegate方法scrollViewDidScroll来检测滚动视图的百分比,并根据该百分比更改alpha

  // MARK: UIScrollViewDelegate

    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
        super.scrollViewDidScroll(scrollView)

        let maximumVerticalOffset = scrollView.contentSize.height - scrollView.frame.height
        let currentVerticalOffset = scrollView.contentOffset.y
        let percentageVerticalOffset = currentVerticalOffset / maximumVerticalOffset

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

希望对您有帮助

答案 1 :(得分:0)

如果要使导航栏与App Store相同,建议您删除默认导航栏并通过使用UIView并将其框架设置为Topbar来创建自定义的Topbar。

主要原因是默认的导航栏在iPhone X和此类手机上看起来不明智且行为明智。

另一个最重要的事情是,您可以默认使用导航栏来实现它,但是Apple一直在修改导航系统,因为您可以在导航中看到不推荐使用的方法。

因此,我建议您创建自定义导航,这将是易于控制的,并且不存在被弃用的方法和所有方法的可能性。

希望这对您有所帮助。