Skip to content

Commit

Permalink
Use imageAsset to set icons colored for both light and dark mode
Browse files Browse the repository at this point in the history
  • Loading branch information
wutschel committed Apr 1, 2024
1 parent e173cc6 commit 27dbc9c
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 2 deletions.
5 changes: 3 additions & 2 deletions XBMC Remote/MoreItemsViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,9 @@ - (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSI
ICON_WIDTH,
ICON_HEIGHT);
UIImageView *iconImage = [[UIImageView alloc] initWithFrame:iconImageViewRect];
UIImage *image = [UIImage imageNamed:item[@"icon"]];
image = [Utilities colorizeImage:image withColor:[Utilities get1stLabelColor]];
UIImage *image = [Utilities setLightDarkModeImageAsset:[UIImage imageNamed:item[@"icon"]]
lightColor:UIColor.darkGrayColor
darkColor:UIColor.lightGrayColor];
iconImage.image = image;
[cell.contentView addSubview:iconImage];
}
Expand Down
1 change: 1 addition & 0 deletions XBMC Remote/Utilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ typedef enum {
+ (UIColor*)updateColor:(UIColor*)newColor lightColor:(UIColor*)lighter darkColor:(UIColor*)darker;
+ (UIColor*)updateColor:(UIColor*)newColor lightColor:(UIColor*)lighter darkColor:(UIColor*)darker trigger:(CGFloat)trigger;
+ (UIImage*)colorizeImage:(UIImage*)image withColor:(UIColor*)color;
+ (UIImage*)setLightDarkModeImageAsset:(UIImage*)image lightColor:(UIColor*)lightColor darkColor:(UIColor*)darkColor;
+ (void)setLogoBackgroundColor:(UIImageView*)imageview mode:(LogoBackgroundType)mode;
+ (BOOL)getPreferTvPosterMode;
+ (LogoBackgroundType)getLogoBackgroundMode;
Expand Down
31 changes: 31 additions & 0 deletions XBMC Remote/Utilities.m
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,37 @@ + (UIImage*)colorizeImage:(UIImage*)image withColor:(UIColor*)color {
return img;
}

+ (UIImage*)setLightDarkModeImageAsset:(UIImage*)image lightColor:(UIColor*)lightColor darkColor:(UIColor*)darkColor {
if (@available(iOS 13.0, *)) {
UITraitCollection *scale = [UITraitCollection currentTraitCollection];
UITraitCollection *lightUI = [UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleLight];
UITraitCollection *darkUI = [UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleDark];
UITraitCollection *lightScaledTC = [UITraitCollection traitCollectionWithTraitsFromCollections:@[scale, lightUI]];
UITraitCollection *darkScaledTC = [UITraitCollection traitCollectionWithTraitsFromCollections:@[scale, darkUI]];
UITraitCollection *lightTraitCollection = [UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleLight];
UITraitCollection *darkTraitCollection = [UITraitCollection traitCollectionWithUserInterfaceStyle:UIUserInterfaceStyleDark];

__block UIImage *lightImage = image;
[darkScaledTC performAsCurrentTraitCollection:^{
lightImage = [Utilities colorizeImage:lightImage withColor:lightColor];
lightImage = [lightImage imageWithConfiguration:[lightImage.configuration configurationWithTraitCollection:lightTraitCollection]];
}];

__block UIImage *darkImage = image;
[lightScaledTC performAsCurrentTraitCollection:^{
darkImage = [Utilities colorizeImage:darkImage withColor:darkColor];
darkImage = [darkImage imageWithConfiguration:[darkImage.configuration configurationWithTraitCollection:darkTraitCollection]];
}];

[lightImage.imageAsset registerImage:darkImage withTraitCollection:darkTraitCollection];
return lightImage;
}
else {
image = [Utilities colorizeImage:image withColor:lightColor];
return image;
}
}

+ (void)setLogoBackgroundColor:(UIImageView*)imageview mode:(LogoBackgroundType)mode {
UIColor *bgcolor = UIColor.clearColor;
UIColor *imgcolor = nil;
Expand Down

0 comments on commit 27dbc9c

Please sign in to comment.