Swift中的Youtube Style Navbar

时间:2015-11-14 04:49:05

标签: swift user-interface youtube uinavigationcontroller uinavigationbar

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

修改

我想要新设计的设计。不是旧的。这与仅更改状态栏文本颜色无关。因此哪个旋钮暗示其重复没有理解技能

Like this

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

您可以通过以下方式更改状态栏的背景,例如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))
    }
}

<强>结果

enter image description here