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

没有更多内容

加载失败,请刷新页面

加载更多

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

查看所有标签

猜你喜欢:

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

Paradigms of Artificial Intelligence Programming

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》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具