Last active
November 7, 2019 14:37
-
-
Save JunyiXie/20ede9a8e630466f34fb6311ff1628b6 to your computer and use it in GitHub Desktop.
DynamicImage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
+ (instancetype)imageWithLightImageBlock:(UIImage *(^)(void))lightImageBlock | |
darkImageBlock:(UIImage *(^)(void))darkImageBlock | |
{ | |
__block UIImage *image = nil; | |
if (@available(iOS 13.0, *)) { | |
UITraitCollection *const scaleTraitCollection = [UITraitCollection currentTraitCollection]; | |
UITraitCollection *const lightUnscaledTraitCollection = [UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleLight]; | |
UITraitCollection *const darkUnscaledTraitCollection = [UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleDark]; | |
UITraitCollection *const lightScaledTraitCollection = [UITraitCollection traitCollectionWithTraitsFromCollections:@[scaleTraitCollection, lightUnscaledTraitCollection]]; | |
UITraitCollection *const darkScaledTraitCollection = [UITraitCollection traitCollectionWithTraitsFromCollections:@[scaleTraitCollection, darkUnscaledTraitCollection]]; | |
[lightScaledTraitCollection performAsCurrentTraitCollection:^{ | |
image = lightImageBlock(); | |
image = [image imageWithConfiguration:[image.configuration configurationWithTraitCollection:[UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleLight]]]; | |
}]; | |
__block UIImage *darkImage; | |
[darkScaledTraitCollection performAsCurrentTraitCollection:^{ | |
darkImage = darkImageBlock(); | |
darkImage = [darkImage imageWithConfiguration:[darkImage.configuration configurationWithTraitCollection:[UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleDark]]]; | |
}]; | |
[image.imageAsset registerImage:darkImage withTraitCollection:[UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleDark]]; | |
} else { | |
image = lightImageBlock(); | |
} | |
return image; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment