DarkModeKit
DarkModeKit 在 Apple 官方深色模式发布之前设计和开发。它为 iOS 11+(包括 iOS 13)的应用程序提供支持深色模式的一种机制。
功能
- iOS 11+ 支持深色模式
- 无需重启应用程序,即可动态更改主题
- 简单的 API 设计,无需对现有代码进行大量修改
安装
要求
- iOS 11.0+
- Xcode 11.0+
- Swift 5+
要将 DarkModeKit 集成到您的 Xcode 项目中使用 Carthage,请在您的 Cartfile
中指定它。
github "microsoft/DarkModeKit"
在 Xcode 菜单中点击 "文件 -> Swift Package Manager -> 添加包依赖..." 并搜索 "https://github.com/microsoft/DarkModeKit"。
若要用 CocoaPods 将 DarkModeKit 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod "DarkModeKit"
要使用 DarkModeKit,提供一组颜色或图片而不是单个值。只需用一组亮色和暗色的颜色/图片替换现有的颜色/图片。
Swift
extension UIColor {
init(_: DMNamespace, light: UIColor, dark: UIColor)
}
let color = UIColor(.dm, light: .white, dark: .black)
Objective-C
@interface UIColor (DarkModeKit)
- (UIColor *)dm_colorWithLightColor:(UIColor *)lightColor darkColor:(UIColor *)darkColor;
@end
UIColor *color = [UIColor dm_colorWithLightColor:UIColor.whiteColor darkColor:UIColor.blackColor];
图片
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。