ios - 当 tableview 在 swift 4 中滚动时,导航栏背景颜色会变成错误的颜色

标签 ios uiscrollview swift4 navigationbar uicolor

我在你的 pipe 上看过这个视频 https://www.youtube.com/watch?v=rNy6aQQYbuY 但问题是导航栏颜色不会将颜色更改为我想要的正确颜色

下面是代码

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.isTranslucent = true
    self.navigationController?.navigationBar.tintColor = .white
    if #available(iOS 11.0, *) {
        self.profileTV.contentInsetAdjustmentBehavior = .never
    } else {
        automaticallyAdjustsScrollViewInsets = false
    }
    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)

    self.navigationController?.navigationBar.shadowImage = UIImage()
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
     print(scrollView.contentOffset.y)
    var offset = scrollView.contentOffset.y / 150
    if offset > 1 {
        offset = 1
        let color = UIColor(red: 181, green: 40, blue: 56, alpha: offset)
        self.navigationController?.navigationBar.backgroundColor = color
        UIApplication.shared.statusBarView?.backgroundColor = color
    } else {
        let color = UIColor(red: 181, green: 40, blue: 56, alpha: offset)
        self.navigationController?.navigationBar.backgroundColor = color
        UIApplication.shared.statusBarView?.backgroundColor = color
    }
}


extension UIApplication {
  var statusBarView: UIView? {
      return value(forKey: "statusBar") as? UIView
  }
}

滚动后的颜色会是白色,但我想成为我在代码中写的颜色代码

最佳答案

将您的代码更改为:

func setNavigation() {
    if #available(iOS 11.0, *) {
        self.tV.contentInsetAdjustmentBehavior = .never
    } else {
        automaticallyAdjustsScrollViewInsets = false
    }
    self.navigationController?.navigationBar.tintColor = .red
    self.navigationController?.navigationBar.isTranslucent = true


    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)

    self.navigationController?.navigationBar.shadowImage = UIImage()

}


func scrollViewDidScroll(_ scrollView: UIScrollView) {

    var offset = scrollView.contentOffset.y / 1500


    if offset >= 1 {
        offset = 1
        self.navigationController?.navigationBar.backgroundColor = UIColor.white.withAlphaComponent(offset)
      //  self.navigationController?.navigationBar.alpha = offset
      //  print(offset - 0.399)
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red.withAlphaComponent(offset)
    } else {
        self.navigationController?.navigationBar.backgroundColor = UIColor.white.withAlphaComponent(offset)
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red.withAlphaComponent(offset)
    }
}

关于ios - 当 tableview 在 swift 4 中滚动时,导航栏背景颜色会变成错误的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55022929/

相关文章:

ios - 使用 UIScrollView 在 UIView layoutSublayersOfLayer 中断言失败

objective-c - UIScrollViews全部同时滚动

ios - 将阴影和角半径应用于 View ,而不是整个单元格

ios - 选择器与 Action Swift 4

iphone - viewDidLoad 或 viewDidDisappear 上的 Xcode 4.2 调试将在 EXC_BAD_ACCESS 上结束

ios - 如何在 iOS 上检测设备的方向?

swift - 如何在 UIScrollView 移动时正确转换 UIView 的比例

IOS Swift 如何突出显示选定的图像

ios - tmp目录下的文件删除后仍然占用空间ios

iphone - UITableView 无法一直滚动到底部