// // FLEXColor.m // FLEX // // Created by Benny Wong on 6/18/19. // Copyright © 2020 FLEX Team. All rights reserved. // #import "FLEXColor.h" #import "FLEXUtility.h" #define FLEXDynamicColor(dynamic, static) ({ \ UIColor *c; \ if (@available(iOS 13.0, *)) { \ c = [UIColor dynamic]; \ } else { \ c = [UIColor static]; \ } \ c; \ }); @implementation FLEXColor #pragma mark - Background Colors + (UIColor *)primaryBackgroundColor { return FLEXDynamicColor(systemBackgroundColor, whiteColor); } + (UIColor *)primaryBackgroundColorWithAlpha:(CGFloat)alpha { return [[self primaryBackgroundColor] colorWithAlphaComponent:alpha]; } + (UIColor *)secondaryBackgroundColor { return FLEXDynamicColor( secondarySystemBackgroundColor, colorWithHue:2.0/3.0 saturation:0.02 brightness:0.97 alpha:1 ); } + (UIColor *)secondaryBackgroundColorWithAlpha:(CGFloat)alpha { return [[self secondaryBackgroundColor] colorWithAlphaComponent:alpha]; } + (UIColor *)tertiaryBackgroundColor { // All the background/fill colors are varying shades // of white and black with really low alpha levels. // We use systemGray4Color instead to avoid alpha issues. return FLEXDynamicColor(systemGray4Color, lightGrayColor); } + (UIColor *)tertiaryBackgroundColorWithAlpha:(CGFloat)alpha { return [[self tertiaryBackgroundColor] colorWithAlphaComponent:alpha]; } + (UIColor *)groupedBackgroundColor { return FLEXDynamicColor( systemGroupedBackgroundColor, colorWithHue:2.0/3.0 saturation:0.02 brightness:0.97 alpha:1 ); } + (UIColor *)groupedBackgroundColorWithAlpha:(CGFloat)alpha { return [[self groupedBackgroundColor] colorWithAlphaComponent:alpha]; } + (UIColor *)secondaryGroupedBackgroundColor { return FLEXDynamicColor(secondarySystemGroupedBackgroundColor, whiteColor); } + (UIColor *)secondaryGroupedBackgroundColorWithAlpha:(CGFloat)alpha { return [[self secondaryGroupedBackgroundColor] colorWithAlphaComponent:alpha]; } #pragma mark - Text colors + (UIColor *)primaryTextColor { return FLEXDynamicColor(labelColor, blackColor); } + (UIColor *)deemphasizedTextColor { return FLEXDynamicColor(secondaryLabelColor, lightGrayColor); } #pragma mark - UI Element Colors + (UIColor *)tintColor { #if FLEX_AT_LEAST_IOS13_SDK if (@available(iOS 13.0, *)) { return UIColor.systemBlueColor; } else { return UIApplication.sharedApplication.keyWindow.tintColor; } #else return UIApplication.sharedApplication.keyWindow.tintColor; #endif } + (UIColor *)scrollViewBackgroundColor { return FLEXDynamicColor( systemGroupedBackgroundColor, colorWithHue:2.0/3.0 saturation:0.02 brightness:0.95 alpha:1 ); } + (UIColor *)iconColor { return FLEXDynamicColor(labelColor, blackColor); } + (UIColor *)borderColor { return [self primaryBackgroundColor]; } + (UIColor *)toolbarItemHighlightedColor { return FLEXDynamicColor( quaternaryLabelColor, colorWithHue:2.0/3.0 saturation:0.1 brightness:0.25 alpha:0.6 ); } + (UIColor *)toolbarItemSelectedColor { return FLEXDynamicColor( secondaryLabelColor, colorWithHue:2.0/3.0 saturation:0.1 brightness:0.25 alpha:0.68 ); } + (UIColor *)hairlineColor { return FLEXDynamicColor(systemGray3Color, colorWithWhite:0.75 alpha:1); } + (UIColor *)destructiveColor { return FLEXDynamicColor(systemRedColor, redColor); } @end