美文网首页
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