美文网首页
iOS15使用prefersLargeTitles时barTin

iOS15使用prefersLargeTitles时barTin

作者: 微步毂纹生 | 来源:发表于2023-03-24 13:31 被阅读0次

    在使用大标题模式(prefersLargeTitles)时,发现无法更改nav的背景颜色,设置barTintColor无效,设置backgroundColor也无效。
    查阅发现,iOS15需要使用UINavigationBarAppearance来设置导航栏。
    设置后发现滑动失去玻璃效果,这是设置standardAppearance导致。
    具体代码如下:
    我没有封装navigationController,以下代码是在BaseViewController中设置,如果封装了navigationController,也可以在其中如此设置

        self.view.backgroundColor = [UIColor systemBackgroundColor];
        self.navigationController.navigationBar.backgroundColor = [UIColor systemBackgroundColor];
        self.navigationController.navigationBar.barTintColor = [UIColor systemBackgroundColor];
        self.navigationController.navigationBar.tintColor = MINECOLOR;
        [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor labelColor]}];
        
        self.navigationItem.largeTitleDisplayMode = UINavigationItemLargeTitleDisplayModeAutomatic;
        
        if(@available(iOS 15.0, *)){
            UINavigationBarAppearance *newAppearance = [UINavigationBarAppearance new];
            [newAppearance configureWithOpaqueBackground];
            newAppearance.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor labelColor]};
            newAppearance.backgroundColor = [UIColor systemBackgroundColor];
            [newAppearance setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor labelColor]}];
            
    //        self.navigationController.navigationBar.standardAppearance = newAppearance; //滑动scroll需要毛玻璃效果不要设置
            
            self.navigationController.navigationBar.scrollEdgeAppearance = newAppearance;
        }
        self.navigationController.navigationBar.translucent = YES;
    
    
    

    相关文章

      网友评论

          本文标题:iOS15使用prefersLargeTitles时barTin

          本文链接:https://www.haomeiwen.com/subject/uvnwrdtx.html