mirror of
https://github.com/arichornlover/uYouEnhanced.git
synced 2026-01-11 22:40:19 +00:00
706 lines
21 KiB
Text
706 lines
21 KiB
Text
#import "uYouPlus.h"
|
|
|
|
//
|
|
static int contrastMode() {
|
|
return [[NSUserDefaults standardUserDefaults] integerForKey:@"lcm"];
|
|
}
|
|
static BOOL lowContrastMode() {
|
|
return IS_ENABLED(@"lowContrastMode_enabled") && contrastMode() == 0;
|
|
}
|
|
static BOOL customContrastMode() {
|
|
return IS_ENABLED(@"lowContrastMode_enabled") && contrastMode() == 1;
|
|
}
|
|
// static UIColor *whiteTextColor() {
|
|
// return [UIColor whiteColor];
|
|
// }
|
|
|
|
UIColor *lcmHexColor;
|
|
|
|
%group gLowContrastMode // Low Contrast Mode v1.6.1 (Compatible with only YouTube v17.33.2-v18.34.5)
|
|
%hook UIColor
|
|
+ (UIColor *)whiteColor { // Dark Theme Color
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)lightTextColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)lightGrayColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)ychGrey7 {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)skt_chipBackgroundColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)placeholderTextColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)systemLightGrayColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)systemExtraLightGrayColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)labelColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)secondaryLabelColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)tertiaryLabelColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
+ (UIColor *)quaternaryLabelColor {
|
|
return [UIColor colorWithRed: 0.56 green: 0.56 blue: 0.56 alpha: 1.00];
|
|
}
|
|
%end
|
|
%hook YTCommonColorPalette
|
|
- (UIColor *)textPrimary {
|
|
NSLog(@"LowContrastMode: textPrimary called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)textSecondary {
|
|
NSLog(@"LowContrastMode: textSecondary called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)overlayTextPrimary {
|
|
NSLog(@"LowContrastMode: overlayTextPrimary called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)overlayTextSecondary {
|
|
NSLog(@"LowContrastMode: overlayTextSecondary called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)iconActive {
|
|
NSLog(@"LowContrastMode: iconActive called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)iconActiveOther {
|
|
NSLog(@"LowContrastMode: iconActiveOther called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)brandIconActive {
|
|
NSLog(@"LowContrastMode: brandIconActive called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)staticBrandWhite {
|
|
NSLog(@"LowContrastMode: staticBrandWhite called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)overlayIconActiveOther {
|
|
NSLog(@"LowContrastMode: overlayIconActiveOther called");
|
|
return self.pageStyle == 1 ? [UIColor whiteColor] : %orig;
|
|
}
|
|
- (UIColor *)overlayIconInactive {
|
|
NSLog(@"LowContrastMode: overlayIconInactive called");
|
|
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.7] : %orig;
|
|
}
|
|
- (UIColor *)overlayIconDisabled {
|
|
NSLog(@"LowContrastMode: overlayIconDisabled called");
|
|
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.3] : %orig;
|
|
}
|
|
- (UIColor *)overlayFilledButtonActive {
|
|
NSLog(@"LowContrastMode: overlayFilledButtonActive called");
|
|
return self.pageStyle == 1 ? [[UIColor whiteColor] colorWithAlphaComponent:0.2] : %orig;
|
|
}
|
|
%end
|
|
%hook YTColor
|
|
+ (BOOL)darkerPaletteTextColorEnabled {
|
|
return NO;
|
|
}
|
|
+ (UIColor *)white1 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
+ (UIColor *)white2 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
+ (UIColor *)white3 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
+ (UIColor *)white4 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
+ (UIColor *)white5 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
+ (UIColor *)grey1 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
+ (UIColor *)grey2 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
%end
|
|
%hook _ASDisplayView
|
|
- (void)layoutSubviews {
|
|
%orig;
|
|
for (UIView *subview in self.subviews) {
|
|
if ([subview.accessibilityLabel isEqualToString:@"connect account"]) {
|
|
subview.backgroundColor = [UIColor whiteColor];
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
} else if ([subview.accessibilityLabel isEqualToString:@"Thanks"]) {
|
|
subview.backgroundColor = [UIColor whiteColor];
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
} else if ([subview.accessibilityLabel isEqualToString:@"Save to playlist"]) {
|
|
subview.backgroundColor = [UIColor whiteColor];
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
} else if ([subview.accessibilityLabel isEqualToString:@"Report"]) {
|
|
subview.backgroundColor = [UIColor whiteColor];
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
%end
|
|
%hook QTMColorGroup
|
|
- (UIColor *)tint100 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)tint300 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)tint500 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)tint700 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)accent200 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)accent400 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)accentColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)brightAccentColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)regularColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)darkerColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)lightBodyTextColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnRegularColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnLighterColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnDarkerColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnAccentColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)buttonBackgroundColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
%end
|
|
%hook YCHLiveChatLabel
|
|
- (NSAttributedString *)attributedText {
|
|
NSAttributedString *originalAttributedString = %orig;
|
|
NSMutableAttributedString *modifiedAttributedString = [originalAttributedString mutableCopy];
|
|
[modifiedAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, modifiedAttributedString.length)];
|
|
return modifiedAttributedString;
|
|
}
|
|
%end
|
|
%hook YTQTMButton
|
|
- (void)setImage:(UIImage *)image {
|
|
UIImage *currentImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
|
|
[self setTintColor:[UIColor whiteColor]];
|
|
%orig(currentImage);
|
|
}
|
|
%end
|
|
%hook UIExtendedSRGColorSpace
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [[UIColor whiteColor] colorWithAlphaComponent:0.9];
|
|
%orig();
|
|
}
|
|
%end
|
|
%hook UIExtendedSRGBColorSpace
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
|
|
%orig();
|
|
}
|
|
%end
|
|
%hook UIExtendedGrayColorSpace
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
|
|
%orig();
|
|
}
|
|
%end
|
|
%hook VideoTitleLabel
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UILabel
|
|
+ (void)load {
|
|
@autoreleasepool {
|
|
[[UILabel appearance] setTextColor:[UIColor whiteColor]];
|
|
}
|
|
}
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%log;
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UITextField
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%log;
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UITextView
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%log;
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UISearchBar
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UISegmentedControl
|
|
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
|
|
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
|
|
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
%orig(modifiedAttributes, state);
|
|
}
|
|
- (void)setCustomTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
|
|
NSMutableDictionary *customAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
|
|
[customAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
%orig(customAttributes, state);
|
|
}
|
|
%end
|
|
%hook UIButton
|
|
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state {
|
|
color = [UIColor whiteColor];
|
|
%orig(color, state);
|
|
}
|
|
- (void)setCustomTitleColor:(UIColor *)color forState:(UIControlState)state {
|
|
color = [UIColor whiteColor];
|
|
%orig(color, state);
|
|
}
|
|
%end
|
|
%hook UIBarButtonItem
|
|
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
|
|
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
|
|
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
%orig(modifiedAttributes, state);
|
|
}
|
|
- (void)setCustomTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
|
|
NSMutableDictionary *customAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
|
|
[customAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
%orig(customAttributes, state);
|
|
}
|
|
%end
|
|
%hook NSAttributedString
|
|
- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSAttributedStringKey, id> *)attrs {
|
|
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attrs];
|
|
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
return %orig(str, modifiedAttributes);
|
|
}
|
|
%end
|
|
%hook CATextLayer
|
|
- (void)setTextColor:(CGColorRef)textColor {
|
|
%orig([UIColor whiteColor].CGColor);
|
|
}
|
|
%end
|
|
%hook ASTextNode
|
|
- (NSAttributedString *)attributedString {
|
|
NSAttributedString *originalAttributedString = %orig;
|
|
NSMutableAttributedString *newAttributedString = [originalAttributedString mutableCopy];
|
|
[newAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, newAttributedString.length)];
|
|
return newAttributedString;
|
|
}
|
|
%end
|
|
%hook ASTextFieldNode
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%orig([UIColor whiteColor]);
|
|
}
|
|
%end
|
|
%hook ASTextView
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%orig([UIColor whiteColor]);
|
|
}
|
|
%end
|
|
%hook ASButtonNode
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%orig([UIColor whiteColor]);
|
|
}
|
|
%end
|
|
%hook UIControl // snackbar fix for lcm
|
|
- (UIColor *)backgroundColor {
|
|
return [UIColor blackColor];
|
|
}
|
|
%end
|
|
%end
|
|
|
|
%group gCustomContrastMode // Custom Contrast Mode (Hex Color)
|
|
%hook UIColor
|
|
+ (UIColor *)whiteColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)lightTextColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)lightGrayColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)ychGrey7 {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)skt_chipBackgroundColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)placeholderTextColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)systemLightGrayColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)systemExtraLightGrayColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)labelColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)secondaryLabelColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)tertiaryLabelColor {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)quaternaryLabelColor {
|
|
return lcmHexColor;
|
|
}
|
|
%end
|
|
%hook YTCommonColorPalette
|
|
- (UIColor *)textPrimary {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)textSecondary {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)overlayTextPrimary {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)overlayTextSecondary {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)iconActive {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)iconActiveOther {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)brandIconActive {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)staticBrandWhite {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)overlayIconActiveOther {
|
|
return self.pageStyle == 1 ? lcmHexColor : %orig;
|
|
}
|
|
- (UIColor *)overlayIconInactive {
|
|
return self.pageStyle == 1 ? [lcmHexColor colorWithAlphaComponent:0.7] : %orig;
|
|
}
|
|
- (UIColor *)overlayIconDisabled {
|
|
return self.pageStyle == 1 ? [lcmHexColor colorWithAlphaComponent:0.3] : %orig;
|
|
}
|
|
- (UIColor *)overlayFilledButtonActive {
|
|
return self.pageStyle == 1 ? [lcmHexColor colorWithAlphaComponent:0.2] : %orig;
|
|
}
|
|
%end
|
|
%hook YTColor
|
|
+ (BOOL)darkerPaletteTextColorEnabled {
|
|
return NO;
|
|
}
|
|
+ (UIColor *)white1 {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)white2 {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)white3 {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)white4 {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)white5 {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)grey1 {
|
|
return lcmHexColor;
|
|
}
|
|
+ (UIColor *)grey2 {
|
|
return lcmHexColor;
|
|
}
|
|
%end
|
|
%hook _ASDisplayView
|
|
- (void)layoutSubviews {
|
|
%orig;
|
|
for (UIView *subview in self.subviews) {
|
|
if ([subview.accessibilityLabel isEqualToString:@"connect account"]) {
|
|
subview.backgroundColor = lcmHexColor;
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
} else if ([subview.accessibilityLabel isEqualToString:@"Thanks"]) {
|
|
subview.backgroundColor = lcmHexColor;
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
} else if ([subview.accessibilityLabel isEqualToString:@"Save to playlist"]) {
|
|
subview.backgroundColor = lcmHexColor;
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
} else if ([subview.accessibilityLabel isEqualToString:@"Report"]) {
|
|
subview.backgroundColor = lcmHexColor;
|
|
if ([subview isKindOfClass:[UILabel class]]) {
|
|
UILabel *label = (UILabel *)subview;
|
|
label.textColor = [UIColor blackColor];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
%end
|
|
%hook QTMColorGroup
|
|
- (UIColor *)tint100 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)tint300 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)tint500 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)tint700 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)accent200 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)accent400 {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)accentColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)brightAccentColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)regularColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)darkerColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)lightBodyTextColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnRegularColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnLighterColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnDarkerColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)bodyTextColorOnAccentColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
- (UIColor *)buttonBackgroundColor {
|
|
return [UIColor whiteColor];
|
|
}
|
|
%end
|
|
%hook YTQTMButton
|
|
- (void)setImage:(UIImage *)image {
|
|
UIImage *currentImage = [image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
|
|
[self setTintColor:[UIColor whiteColor]];
|
|
%orig(currentImage);
|
|
}
|
|
%end
|
|
%hook UIExtendedSRGColorSpace
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [[UIColor whiteColor] colorWithAlphaComponent:0.9];
|
|
%orig();
|
|
}
|
|
%end
|
|
%hook UIExtendedSRGBColorSpace
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
|
|
%orig();
|
|
}
|
|
%end
|
|
%hook UIExtendedGrayColorSpace
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [[UIColor whiteColor] colorWithAlphaComponent:1.0];
|
|
%orig();
|
|
}
|
|
%end
|
|
%hook VideoTitleLabel
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UILabel
|
|
+ (void)load {
|
|
@autoreleasepool {
|
|
[[UILabel appearance] setTextColor:[UIColor whiteColor]];
|
|
}
|
|
}
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%log;
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UITextField
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%log;
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UITextView
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%log;
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UISearchBar
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook UISegmentedControl
|
|
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
|
|
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
|
|
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
%orig(modifiedAttributes, state);
|
|
}
|
|
%end
|
|
%hook UIButton
|
|
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state {
|
|
color = [UIColor whiteColor];
|
|
%orig(color, state);
|
|
}
|
|
%end
|
|
%hook UIBarButtonItem
|
|
- (void)setTitleTextAttributes:(NSDictionary *)attributes forState:(UIControlState)state {
|
|
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attributes];
|
|
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
%orig(modifiedAttributes, state);
|
|
}
|
|
%end
|
|
%hook NSAttributedString
|
|
- (instancetype)initWithString:(NSString *)str attributes:(NSDictionary<NSAttributedStringKey, id> *)attrs {
|
|
NSMutableDictionary *modifiedAttributes = [NSMutableDictionary dictionaryWithDictionary:attrs];
|
|
[modifiedAttributes setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
|
|
return %orig(str, modifiedAttributes);
|
|
}
|
|
%end
|
|
%hook CATextLayer
|
|
- (void)setTextColor:(CGColorRef)textColor {
|
|
%orig([[UIColor whiteColor] CGColor]);
|
|
}
|
|
%end
|
|
%hook _ASDisplayView
|
|
- (void)setAttributedText:(NSAttributedString *)attributedText {
|
|
NSMutableAttributedString *newAttributedString = [attributedText mutableCopy];
|
|
[newAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, newAttributedString.length)];
|
|
%orig(newAttributedString);
|
|
}
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
textColor = [UIColor whiteColor];
|
|
%orig(textColor);
|
|
}
|
|
%end
|
|
%hook ASTextNode
|
|
- (NSAttributedString *)attributedString {
|
|
NSAttributedString *originalAttributedString = %orig;
|
|
NSMutableAttributedString *newAttributedString = [originalAttributedString mutableCopy];
|
|
[newAttributedString addAttribute:NSForegroundColorAttributeName value:[UIColor whiteColor] range:NSMakeRange(0, newAttributedString.length)];
|
|
return newAttributedString;
|
|
}
|
|
%end
|
|
%hook ASTextFieldNode
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%orig([UIColor whiteColor]);
|
|
}
|
|
%end
|
|
%hook ASTextView
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%orig([UIColor whiteColor]);
|
|
}
|
|
%end
|
|
%hook ASButtonNode
|
|
- (void)setTextColor:(UIColor *)textColor {
|
|
%orig([UIColor whiteColor]);
|
|
}
|
|
%end
|
|
%hook UIControl
|
|
- (UIColor *)backgroundColor {
|
|
return [UIColor blackColor];
|
|
}
|
|
%end
|
|
%end
|
|
|
|
# pragma mark - ctor
|
|
%ctor {
|
|
%init;
|
|
if (lowContrastMode()) {
|
|
%init(gLowContrastMode);
|
|
}
|
|
if (customContrastMode()) {
|
|
NSData *lcmColorData = [[NSUserDefaults standardUserDefaults] objectForKey:@"kCustomUIColor"];
|
|
NSKeyedUnarchiver *lcmUnarchiver = [[NSKeyedUnarchiver alloc] initForReadingFromData:lcmColorData error:nil];
|
|
[lcmUnarchiver setRequiresSecureCoding:NO];
|
|
NSString *lcmHexString = [lcmUnarchiver decodeObjectForKey:NSKeyedArchiveRootObjectKey];
|
|
if (lcmHexString != nil) {
|
|
lcmHexColor = [lcmUnarchiver decodeObjectForKey:NSKeyedArchiveRootObjectKey];
|
|
%init(gCustomContrastMode);
|
|
}
|
|
}
|
|
}
|