Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

iOS15导航问题 #301

Open
TomasWell opened this issue Sep 26, 2021 · 5 comments
Open

iOS15导航问题 #301

TomasWell opened this issue Sep 26, 2021 · 5 comments

Comments

@TomasWell
Copy link

if (@available(iOS 15.0, *)) {
    [[UINavigationBar appearance] setScrollEdgeAppearance:({
        UINavigationBarAppearance *app = [UINavigationBarAppearance new];
        [app configureWithDefaultBackground];
        // init app property
         app.backgroundColor = UIColorHex(0x163a59);
         app.shadowColor = UIColorHex(0x163a59);
        app;
    })];
}

你好,根据这个配置颜色,如果vc里面有tableview,向上画一下就变成了白色,希望大佬能关注到这个问题

@SpaceBlueFish
Copy link

if (@available(iOS 15.0, *)) {
    [[UINavigationBar appearance] setScrollEdgeAppearance:({
        UINavigationBarAppearance *app = [UINavigationBarAppearance new];
        [app configureWithDefaultBackground];
        // init app property
         app.backgroundColor = UIColorHex(0x163a59);
         app.shadowColor = UIColorHex(0x163a59);
        app;
    })];
}

你好,根据这个配置颜色,如果vc里面有tableview,向上画一下就变成了白色,希望大佬能关注到这个问题

[UINavigationBar appearance].standardAppearance = app;

这个也配置一下就行了

@TomasWell
Copy link
Author

感谢

@wj19910
Copy link

wj19910 commented Oct 30, 2021

[UINavigationBar appearance] 是全局设置,当存在个别页面需要隐藏导航栏时不适用。
从源码 RTRootNavigationController.m 的 188 行前后上下文分析,加入以下代码可以分开设置从而达到效果。
fix.md

@LuKane
Copy link

LuKane commented Nov 25, 2021

    var setNavigationType: Int {
        set {
            if #available(iOS 15.0, *) {
                if newValue == 0 {
                    let app = UINavigationBarAppearance.init()
                    app.configureWithDefaultBackground() /// 设置默认背景
                    app.backgroundImage = nil            /// 导航条背景 : 一张图片
                    app.backgroundColor = JFTMainColor   /// 导航条背景 : 纯颜色
                    app.backgroundEffect = nil           /// 导航条背景 : 是否要一个 模糊效果
                    app.shadowImage = nil                /// 导航条最下方的一条线 : 一张图片
                    app.shadowColor = UIColor.clear      /// 导航条最下方的一条线 : 纯颜色
                    app.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] /// 导航条title的颜色 || 大小

                    navigationController?.navigationBar.scrollEdgeAppearance = app
                    navigationController?.navigationBar.standardAppearance = app
                }else {
                    
                }
            } else {
                if newValue == 0 { // 主颜色
                    navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white ,NSAttributedString.Key.font : UIFont.systemFont(ofSize: 18)]
                    navigationController?.navigationBar.barTintColor = JFTMainColor
                }else {
                    
                }
            }
        }
        get {
            return 0
        }
    }

针对iOS15.0以后 我的做法 : 在 基类控制器中 用一个 setNavigationType 来表示, 可以设置默认值
特殊的几个页面: 导航条背景是图片 || 导航条背景是其他颜色 || 导航条背景是透明色
这样继承这个 基类控制器就可以 通过设置 setNavigationType 来修改 当前导航条的背景了

@LCBbest
Copy link

LCBbest commented Dec 6, 2021

    var setNavigationType: Int {
        set {
            if #available(iOS 15.0, *) {
                if newValue == 0 {
                    let app = UINavigationBarAppearance.init()
                    app.configureWithDefaultBackground() /// 设置默认背景
                    app.backgroundImage = nil            /// 导航条背景 : 一张图片
                    app.backgroundColor = JFTMainColor   /// 导航条背景 : 纯颜色
                    app.backgroundEffect = nil           /// 导航条背景 : 是否要一个 模糊效果
                    app.shadowImage = nil                /// 导航条最下方的一条线 : 一张图片
                    app.shadowColor = UIColor.clear      /// 导航条最下方的一条线 : 纯颜色
                    app.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white] /// 导航条title的颜色 || 大小

                    navigationController?.navigationBar.scrollEdgeAppearance = app
                    navigationController?.navigationBar.standardAppearance = app
                }else {
                    
                }
            } else {
                if newValue == 0 { // 主颜色
                    navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white ,NSAttributedString.Key.font : UIFont.systemFont(ofSize: 18)]
                    navigationController?.navigationBar.barTintColor = JFTMainColor
                }else {
                    
                }
            }
        }
        get {
            return 0
        }
    }

针对iOS15.0以后 我的做法 : 在 基类控制器中 用一个 setNavigationType 来表示, 可以设置默认值 特殊的几个页面: 导航条背景是图片 || 导航条背景是其他颜色 || 导航条背景是透明色 这样继承这个 基类控制器就可以 通过设置 setNavigationType 来修改 当前导航条的背景了

666

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants