美文网首页iOS常用
iOS15系统适配问题

iOS15系统适配问题

作者: 夜凉听风雨 | 来源:发表于2021-09-29 11:32 被阅读0次

iOS15系统需要对导航栏进行适配,增加两种appearance,分别是scrollEdgeAppearance(不滚动时)和standardAppearance(滚动时)。iOS15系统之前设置导航栏样式后滚动和不滚动是没区别的,现在要实现滚动和不滚动一样的样式必须设置这两种appearance。

下面在控制器里生成一个appearance并赋值给导航栏:(如果需要设置不同的样式可以生成两个appearance对象分别赋值给导航栏)

if (@available(iOS 15.0,*)) {
        UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
        self.navigationController.navigationBar.scrollEdgeAppearance = appearance;
        self.navigationController.navigationBar.standardAppearance = self.navigationController.navigationBar.scrollEdgeAppearance;
}

在需要修改样式时可以通过导航栏再获取到这两个appearance,通过appearance修改样式。

注意:
虽然上面生成appearance并且赋值给导航栏时用的是同一个,但是将appearance赋值给导航栏后,导航栏会复制一份,所以导航栏的两种appearance并不是同一个对象。在修改样式时如需修改两种状态下的导航栏样式,必须同时获取到两种appearance再分别进行修改,只获取一个修改是不行的!!!

下面是在某处修改导航栏样式:

if (@available(iOS 15.0,*)) {
        UINavigationBarAppearance *appearance = self.navigationController.navigationBar.scrollEdgeAppearance;
        // 设置为不透明
        appearance.backgroundEffect = nil;
        appearance.shadowColor = [UIColor clearColor];
        appearance.backgroundImage = [UIImage imageWithColor:[UIColor whiteColor]];
        
        UINavigationBarAppearance *appearance2 = self.navigationController.navigationBar.standardAppearance;
        // 设置为不透明
        appearance2.backgroundEffect = nil;
        appearance2.shadowColor = [UIColor clearColor];
        appearance2.backgroundImage = [UIImage imageNamed:@"test"];
        
    } else {
        [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"test"] forBarMetrics:UIBarMetricsDefault];
        [self.navigationController.navigationBar setShadowImage:[UIImage new]]; //去掉导航下面的线
    }

相关文章

  • html2canvas在ios15系统截图空白并刷新

    随着ios15系统的出现,项目适配ios15系统兼容性。 发现html2canvas在iOS15系统中截图空白并在...

  • 日期篇

    1. NSDateFormatter 1.1 系统适配 iOS15以下dateFormat = @"HH:mm" ...

  • iOS15系统适配问题

    iOS15系统需要对导航栏进行适配,增加两种appearance,分别是scrollEdgeAppearance(...

  • iOS 15 适配

    一年一系统,一年一适配。今天我们来讲一下iOS15适配的相关地方。导航栏适配iOS 15中,导航栏的问题比较明显,...

  • iOS15适配

    对于iOS15适配汇总以及遇到的问题 注意:以下适配内容,必须适配的会以"必须"标出 UITableView Se...

  • iOS15适配

    前言 中秋过节回来Apple发布了iPhone 13与iOS15正式版的系统推送,开发者又要适配新的系统啦。PS:...

  • iOS15 适配更新总结

    本文主要分享一下 iOS15 上适配方案,仅做开发记录使用,开发过程中通过使用陆续增加。 iOS15 的适配,很重...

  • iOS开发技巧之:iOS15 适配更新总结

    本文主要分享一下 iOS15 上适配方案,仅做开发记录使用,开发过程中通过使用陆续增加。 iOS15 的适配,很重...

  • iOS15适配

    iOS15适配主要是以下几点:UINavigationController、UITabBarController、...

  • iOS 15 适配笔记

    前言 环境 在 升级xcode 13.0 之后,正式开始支持 iOS15,就需要做适配 iOS15了,在 xcod...

网友评论

    本文标题:iOS15系统适配问题

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