Swift 中的 Youtube 风格导航栏

Posted

技术标签:

【中文标题】Swift 中的 Youtube 风格导航栏【英文标题】:Youtube Style Navbar in Swift 【发布时间】:2016-02-15 18:30:04 【问题描述】:

我想知道如何实现比导航栏颜色更暗的状态栏颜色,就像 youtube 在使用 Swift 的新应用(材料设计)中所做的那样。

编辑

我想要新应用设计的设计。不是旧的。这与仅更改状态栏文本颜色无关。所以哪个旋钮暗示它的复制品没有理解能力

【问题讨论】:

how do I properly change my status bar style in swift 2/ ios 9?的可能重复 您可能想通过以下方式阅读此答案:***.com/a/19585104/433373 对不起,我的意思是这个更好:***.com/a/18855464/433373 【参考方案1】:

所以我发现我必须在导航栏上添加一个子视图,然后添加一个较暗的红色阴影作为视图的背景。如果您的导航栏颜色在整个应用程序中相同,则可以在 UINavigationClass 中使用它,也可以将其添加到视图控制器中以使其不同。

【讨论】:

【参考方案2】:

你可以像youtube这样改变状态栏的背景:

AppDelegate

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 

        // Step 1
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        window?.makeKeyAndVisible()


        //Step 2
        UINavigationBar.appearance().barTintColor = UIColor.rgb(230, green: 32, blue: 32)
        application.statusBarStyle = .LightContent

        // Step 3
        let statusBarBackgroundView = UIView()
        statusBarBackgroundView.backgroundColor = UIColor.rgb(194, green: 31, blue: 31)

        window?.addSubview(statusBarBackgroundView)
        window?.addConstraintsWithFormat("H:|[v0]|", views: statusBarBackgroundView)
        window?.addConstraintsWithFormat("V:|[v0(20)]", views: statusBarBackgroundView)


        return true
    


extension UIColor 
    static func rgb(red: CGFloat, green: CGFloat, blue: CGFloat) -> UIColor 
        return UIColor(red: red/255, green: green/255, blue: blue/255, alpha: 1)
    



extension UIView 
    func addConstraintsWithFormat(format: String, views: UIView...) 
        var viewsDictionary = [String: UIView]()

        for(index, view) in views.enumerate() 
            let key = "v\(index)"

            view.translatesAutoresizingMaskIntoConstraints = false
            viewsDictionary[key] = view
        

        addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(format, options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary))
    

结果

【讨论】:

以上是关于Swift 中的 Youtube 风格导航栏的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 的导航栏中获取搜索栏

如何在swift 4中的导航栏上添加图像后退按钮

Xcode 13 - swift OS 15 中的导航栏和状态栏文本颜色变化

导航栏中的 Swift 自定义后退按钮

Swift : 导航栏应该放在顶部

在Swift中的导航栏中设置图像