iOS13 适配 夜间模式(深色模式 DarkMode)与其他
原
荐
字数 638
阅读 1
收藏 0
冲击年薪50W,助你进阶 Python 工程师>>>
https://my.oschina.net/wintelsui/blog/3063883
iOS13 适配 夜间模式与其他
- 夜间模式
- 其他问题:presentViewController
###一 :夜间/深色模式 DarkMode
夜间模式是iOS13的重要更新之一,随之而来的是我们能从系统设置中“显示与亮度”中选择“浅色”、“深色”两种模式,并且可以设置自动切换。(“控制中心”亮度调节中也可直接调节)
已知问题:在系统设置为深色模式时候,无法更改StateBar颜色
-
如果不想适配深色模式 (1).直接在项目的plist文件中设置
<key>UIUserInterfaceStyle</key> <string>UIUserInterfaceStyleLight</string>
(2).在每个UIViewController或者BaseViewController(如果自己有的话),中设置
if (@available(iOS 13.0, *)){ self.overrideUserInterfaceStyle = UIUserInterfaceStyleLight; }
-
适配深色模式 首先我们要看一下显示模式的枚举值
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:@""]会自动加载浅色/深色资源.
最后上一段 UIViewController 截图
最后最后上一段 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
###二 :其他问题
- presentViewController modalPresentationStyle参数有 iOS12 之前的UIModalPresentationFullScreen改为了UIModalPresentationPageSheet, 在需要presentViewController FullScreen样式,需要提前设置
© 著作权归作者所有
相关文章 最新文章
> 白天夜间模式场景,换肤框架 -- 关于三种『应用内主题切换』开源项目的一点思考- https://www.jianshu.com/p/2164fa5803b9 1.Theme的方案,在style文件中定义不同的主题即可 2.遍历View,对...
desaco
2018/08/27
0
0
无偿推广: Mac OS 最强鼠标改键软件:BetterAndBetter 关键词: pdf 夜间模式 护眼 反色 mac windows linux 持续更新。如果您还知道其它支持夜间模式的pdf软件,欢迎在评论区留言。 转载请注...
故国有明
2018/10/12
0
0
北京时间 6 月 5 日凌晨,一年一度的苹果 WWDC 开发者大会在美国圣何塞召开。本次大会一切都是关于软件的,大会上,苹果正式推出了新版 iPhone 操作系统 iOS 12,并宣布了新版 macOS 桌面系统...
局长
2018/06/05
3.7K
17
RNPolymerPo 是一个基于 React Native 的 Android 企业级生活类聚合实战项目,目前由于没有 MAC 设备,所以没有适配 iOS,感兴趣的可以自行适配 app 目录下相关 JS 代码即可。 运行效果 下一...
工匠若水
2016/12/19
473
0
Android7.0提供新功能以提升性能、生产效率和安全性。 关于Android N的性能改进,Android N建立了先进的图形处理Vulkan系统,能少的减少对CPU的占用。与此同时,Android N加入了JIT编译器,安...
安卓笔记侠
2018/08/09
0
0
没有更多内容
加载失败,请刷新页面
加载更多配置文件样例: # 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收集web产生的日志,输出hdfs上,一天一个文件夹。文件下面就是今天的日志,然后有一个日志分析程序读取每天的日志进行分析,但是日志分析程序一直读不到hdfs上收集...
爱运动的小乌龟
2分钟前
0
0
ava在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。 相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,...
天王盖地虎626
3分钟前
0
0
1.路径 path因素 Inherit project compile output path :继承项目输出路径 Use module compile output path :使用模块编译输出路径。如果是选择继承项目输出路径是可能会导致无法创建entit...
小天丶羽
15分钟前
0
0
在(一)中我们配置好了 hibernate二级缓存 Hazelcast实现,但是当我们使用spring cache相关注解(@CacheConfig,@Cacheable,@CachePut,@CacheEvict ,@Caching )的时候,并不能自动创建缓...
花树堆雪
19分钟前
0
0
没有更多内容
加载失败,请刷新页面
加载更多以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- “暗黑模式”之58 同城 iOS App深色模式适配实践
- 简单又好用的前端深色模式和主题化开发方案
- 外媒爆料:苹果iOS 13.1将新增深色模式
- iOS13-适配夜间模式/深色外观(Dark Mode)
- WebKit 继续泄密,macOS 10.14 将支持深色模式
- WWDC 大会开幕,我们准备了一份「深色模式」设计要点
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Paradigms of Artificial Intelligence Programming
Peter Norvig / Morgan Kaufmann / 1991-10-01 / USD 77.95
Paradigms of AI Programming is the first text to teach advanced Common Lisp techniques in the context of building major AI systems. By reconstructing authentic, complex AI programs using state-of-the-......一起来看看 《Paradigms of Artificial Intelligence Programming》 这本书的介绍吧!