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 大会开幕,我们准备了一份「深色模式」设计要点
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。