DarkModeKit 0.4.0

DarkModeKit 0.4.0

由以下人员维护:Luna ZhengLuna ZhengicodesignLanceBei LiDaohan Chong



  • 微软公司

DarkModeKit

Carthage compatible

DarkModeKit 在 Apple 官方深色模式发布之前设计和开发。它为 iOS 11+(包括 iOS 13)的应用程序提供支持深色模式的一种机制。

功能

  • iOS 11+ 支持深色模式
  • 无需重启应用程序,即可动态更改主题
  • 简单的 API 设计,无需对现有代码进行大量修改

安装

要求

  • iOS 11.0+
  • Xcode 11.0+
  • Swift 5+

https://github.com/microsoft/DarkModeKit"。

图片

Swift

extension UIImage {
    init(_: DMNamespace, light: UIImage, dark: UIImage)
}

let lightImage = UIImage(named: "Light")!
let darkImage = UIImage(named: "Dark")!
let image = UIImage(.dm, light: lightImage, dark: darkImage)

Objective-C

@interface UIImage (DarkModeKit)
- (UIImage *)dm_imageWithLightImage:(UIImage *)lightImage darkImage:(UIImage *)darkImage;
@end

其他

对于更复杂的场景,DarkModeKit与iOS 13中苹果的做法类似(有一些细微差别)。它维护一个全局的DMTraitCollection,在自定义布局期间可以通过DMTraitCollection.current访问。

有关布局期间应处理的案例的更多信息,请参阅苹果的文档

当主题更改时,DarkModeKit将通过调用以下代理方法来通知当前窗口中的视图或视图控制器。

Swift

protocol DMTraitEnvironment: NSObjectProtocol {
    func dmTraitCollectionDidChange(_ previousTraitCollection: DMTraitCollection?)
}

Objective-C

@protocol DMTraitEnvironment <NSObject>

- (void)dmTraitCollectionDidChange:(nullable DMTraitCollection *)previousTraitCollection;

@end

贡献

该项目欢迎贡献和建议。大多数贡献都需要您同意贡献者许可协议(CLA),声明您有权,并且实际上确实授予我们使用您贡献的权利。有关详细信息,请访问https://cla.opensource.microsoft.com

当您提交合并请求时,CLA机器人会自动确定您是否需要提供CLA,并根据需要装饰PR(例如,状态检查,评论)。只需遵循机器人提供的说明。您只需在整个使用我们的CLA的各个存储库中做一次。

该项目采用了Microsoft Open Source Code of Conduct。有关更多信息,请参阅Code of Conduct FAQ或与[email protected]联系,并提出任何附加问题或评论。

许可

版权(c)微软公司。保留所有权利。

许可协议为MIT