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 大会开幕,我们准备了一份「深色模式」设计要点
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java编程思想 (第4版)
[美] Bruce Eckel / 陈昊鹏 / 机械工业出版社 / 2007-6 / 108.00元
本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形。从Java的基础语法到最高级特性(深入的面向对象概念、多线程、自动项目构建、单元测试和调试等),本书都能逐步指导你轻松掌握。 从本书获得的各项大奖以及来自世界各地的读者评论中,不难看出这是一本经典之作。本书的作者拥有多年教学经验,对C、C++以及Java语言都有独到......一起来看看 《Java编程思想 (第4版)》 这本书的介绍吧!