用户滚动时如何更改UINavigationBar barTintColor

Ril*_*Dev 2 uinavigationbar ios swift

我试图改变UINavigationBar.barTintColorUIColor.clearColor()whiteColor()用户滚动的时候,还变回清除,当用户滚动返回到视图的顶部。

这就是我一直在尝试的东西;

ViewDidLoad

self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.backgroundColor = UIColor.clearColor()
self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
self.navigationController?.navigationBar.barTintColor = UIColor.clearColor()
Run Code Online (Sandbox Code Playgroud)

scrollViewDidScroll

override func scrollViewDidScroll(scrollView: UIScrollView) {
  self.navigationController?.navigationBar.shadowImage = UIImage()
  self.navigationController?.navigationBar.backgroundColor = UIColor.whiteColor()
  self.navigationController?.navigationBar.tintColor = UIColor.redColor()
  self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
}
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,有人知道我如何才能实现所追求的效果吗?

sch*_*dt9 5

最简单的解决方案:

func scrollViewDidScroll(scrollView: UIScrollView) {
        if (scrollView.contentOffset.y > 0) {
            self.navigationController?.navigationBar.backgroundColor = UIColor.whiteColor()
            self.navigationController?.navigationBar.tintColor = UIColor.redColor()
            self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
        } else {
            self.navigationController?.navigationBar.backgroundColor = UIColor.clearColor()
            self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
            self.navigationController?.navigationBar.barTintColor = UIColor.clearColor()
        }
    }
Run Code Online (Sandbox Code Playgroud)