iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐

栏目: IOS · 发布时间: 5年前

iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐

iOS13 适配 夜间模式(深色模式 DarkMode)与其他

  OSC_官方超管 发布于 今天 15:57

字数 638

阅读 1

收藏 0

iOS

冲击年薪50W,助你进阶 Python 工程师>>> iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐

https://my.oschina.net/wintelsui/blog/3063883

iOS13 适配 夜间模式与其他

  • 夜间模式
  • 其他问题:presentViewController

###一 :夜间/深色模式 DarkMode

夜间模式是iOS13的重要更新之一,随之而来的是我们能从系统设置中“显示与亮度”中选择“浅色”、“深色”两种模式,并且可以设置自动切换。(“控制中心”亮度调节中也可直接调节)

已知问题:在系统设置为深色模式时候,无法更改StateBar颜色

  1. 如果不想适配深色模式 (1).直接在项目的plist文件中设置 <key>UIUserInterfaceStyle</key> <string>UIUserInterfaceStyleLight</string>

    (2).在每个UIViewController或者BaseViewController(如果自己有的话),中设置 if (@available(iOS 13.0, *)){ self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; }

  2. 适配深色模式 首先我们要看一下显示模式的枚举值

typedef NS_ENUM(NSInteger, UIUserInterfaceStyle) {
    UIUserInterfaceStyleUnspecified,
    UIUserInterfaceStyleLight,
    UIUserInterfaceStyleDark,
} API_AVAILABLE(tvos(10.0)) API_AVAILABLE(ios(12.0)) API_UNAVAILABLE(watchos);

当前API还没有提供浅色/深色模式切换时的通知,但是为UIColor添加了新方法: + (UIColor *)colorWithDynamicProvider:(UIColor * (^)(UITraitCollection *))dynamicProvider; 该方法通过一个block返回颜色,根据其中UITraitCollection参数,我们可以获取到当前系统的UIUserInterfaceStyle. 这个方法会在每次系统模式改变后回调,所以我想,我可以在一个颜色中去为当前界面做监听.

Xcode 11为xcassets带来更新以自动读取加载浅色/深色模式的资源,只要修改资源Appearances属性,来设置是否要支持浅色/深色模式,以及资源内容即可,[UIImage imageNamed:@""]会自动加载浅色/深色资源. iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐

最后上一段 UIViewController 截图 iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐

最后最后上一段 UIViewController 代码

#import "DarkModeViewController.h"

@interface DarkModeViewController ()
{
    UIImageView *_iv2;
    UIUserInterfaceStyle _userInterfaceStyle;
}
@end

@implementation DarkModeViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    __weak typeof(self)weakSelf = self;
    UIColor *backgroundColor = [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * traitCollection) {
        self->_userInterfaceStyle = traitCollection.userInterfaceStyle;
        [weakSelf performSelector:@selector(traitCollectionChanged:) withObject:traitCollection];
        if (traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark) {
            return [UIColor blueColor];
        }
        return [UIColor yellowColor];
    }];
    self.view.backgroundColor = backgroundColor;
    
    UIImageView *iv = ({
        UIImageView *imageView = [[UIImageView alloc] init];
        [imageView setBackgroundColor:[UIColor clearColor]];
        [imageView setFrame:CGRectMake(20, 100, 100, 100)];
        imageView.image = [UIImage imageNamed:@"icon_star"];
        imageView;
    });
    [self.view addSubview:iv];
    
    _iv2 = ({
        UIImageView *imageView = [[UIImageView alloc] init];
        [imageView setBackgroundColor:[UIColor clearColor]];
        [imageView setFrame:CGRectMake(20, 240, 100, 100)];
        imageView;
    });
    [self.view addSubview:_iv2];
    [self iv2updateImage];
}

- (void)traitCollectionChanged:(UITraitCollection *)traitCollection{
    NSLog(@"traitCollectionChanged:%ld",traitCollection.userInterfaceStyle);
    [self iv2updateImage];
    
}
- (void)iv2updateImage {
    NSLog(@"iv2updateImage:%ld",_userInterfaceStyle);
    if (_userInterfaceStyle == UIUserInterfaceStyleDark) {
        _iv2.image = [UIImage systemImageNamed:@"star.circle.fill"];
    }else{
        _iv2.image = [UIImage systemImageNamed:@"star.circle"];
    }
}
@end

###二 :其他问题

  1. presentViewController modalPresentationStyle参数有 iOS12 之前的UIModalPresentationFullScreen改为了UIModalPresentationPageSheet, 在需要presentViewController FullScreen样式,需要提前设置

© 著作权归作者所有

上一篇: iOS Dev 其实iOS开发很简单《归属地查询》软件的抛砖引玉(源码+全国号码归属地数据库)

下一篇: 动手自己写一个 xcode 插件(Xcode Source Editor Extensions)附源码

iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐

OSC_官方超管

粉丝 34

博文 4

码字总数 2324

作品 0

朝阳

程序员

提问

相关文章 最新文章

Android UI换皮肤或 白天黑夜模式

> 白天夜间模式场景,换肤框架 -- 关于三种『应用内主题切换』开源项目的一点思考- https://www.jianshu.com/p/2164fa5803b9 1.Theme的方案,在style文件中定义不同的主题即可 2.遍历View,对...

desaco

2018/08/27

0

0

各平台支持夜间模式的PDF软件

无偿推广: Mac OS 最强鼠标改键软件:BetterAndBetter 关键词: pdf 夜间模式 护眼 反色 mac windows linux 持续更新。如果您还知道其它支持夜间模式的pdf软件,欢迎在评论区留言。 转载请注...

故国有明

2018/10/12

0

0

苹果 WWDC 2018:iOS 12 和 macOS Mojave 正式推出

北京时间 6 月 5 日凌晨,一年一度的苹果 WWDC 开发者大会在美国圣何塞召开。本次大会一切都是关于软件的,大会上,苹果正式推出了新版 iPhone 操作系统 iOS 12,并宣布了新版 macOS 桌面系统...

局长

2018/06/05

3.7K

17

基于 React Native 的 Android 聚合应用--RNPolymerPo

RNPolymerPo 是一个基于 React Native 的 Android 企业级生活类聚合实战项目,目前由于没有 MAC 设备,所以没有适配 iOS,感兴趣的可以自行适配 app 目录下相关 JS 代码即可。 运行效果 下一...

工匠若水

2016/12/19

473

0

iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐
Android 7.0 新特性

Android7.0提供新功能以提升性能、生产效率和安全性。 关于Android N的性能改进,Android N建立了先进的图形处理Vulkan系统,能少的减少对CPU的占用。与此同时,Android N加入了JIT编译器,安...

安卓笔记侠

2018/08/09

0

0

没有更多内容

加载失败,请刷新页面

加载更多
zookeeper配置文件zoo.cfg参数含义

配置文件样例: # The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of......

654476371

1分钟前

0

0

定时关闭flume收集的文件

问题:我们的项目使用flume收集web产生的日志,输出hdfs上,一天一个文件夹。文件下面就是今天的日志,然后有一个日志分析程序读取每天的日志进行分析,但是日志分析程序一直读不到hdfs上收集...

爱运动的小乌龟

2分钟前

0

0

java的两种同步方式, Synchronized与ReentrantLock的区别

ava在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。 相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,...

天王盖地虎626

3分钟前

0

0

用JPA在测试的时候无法创建EntityManager Factory无法创建的几个可能因素!

1.路径 path因素 Inherit project compile output path :继承项目输出路径 Use module compile output path :使用模块编译输出路径。如果是选择继承项目输出路径是可能会导致无法创建entit...

小天丶羽

15分钟前

0

0

iOS13 适配 夜间模式(深色模式 DarkMode)与其他 原 荐
spring boot 2.1.4 hibernate二级缓存 Hazelcast实现(二)

在(一)中我们配置好了 hibernate二级缓存 Hazelcast实现,但是当我们使用spring cache相关注解(@CacheConfig,@Cacheable,@CachePut,@CacheEvict ,@Caching )的时候,并不能自动创建缓...

花树堆雪

19分钟前

0

0

没有更多内容

加载失败,请刷新页面

加载更多

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

一路编程

一路编程

史蒂夫·富特 (Steven Foote) / 佟达 / 电子工业出版社 / 2017-1-1 / CNY 65.00

《一路编程》是一本编程入门书籍,然而,如果以书中所讲内容作为入门标准,估计十有八九的在职程序员都不能算已入门。现代软件开发,已经不仅仅是写出正确的代码这么简单,环境、依赖、构建、版本、测试及文档,每一项都对软件是否成功交付起到至关重要的作用,这些都是每一个程序员在开发软件过程中必备的技能。《一路编程》对于上述的每一种技能都做了简洁而精练的介绍,以满足最基本的日常软件开发。换句话说,《一路编程》实际......一起来看看 《一路编程》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具