Ver código fonte

Refactor FLEXColor

- More consistent method names
- Use dynamic system colors instead of hard-coding dynamic colors
   - If we run under iOS 12 or earlier, we only have light mode anyway
Tanner Bennett 7 anos atrás
pai
commit
1669b205da

+ 1 - 1
Classes/Editing/ArgumentInputViews/FLEXArgumentInputTextView.m

@@ -25,7 +25,7 @@
     if (self) {
         self.inputTextView = [[UITextView alloc] init];
         self.inputTextView.font = [[self class] inputFont];
-        self.inputTextView.backgroundColor = [FLEXColor systemBackgroundColor];
+        self.inputTextView.backgroundColor = [FLEXColor primaryBackgroundColor];
         self.inputTextView.layer.borderColor = [[FLEXColor borderColor] CGColor];
         self.inputTextView.layer.borderWidth = 1.0;
         self.inputTextView.autocapitalizationType = UITextAutocapitalizationTypeNone;

+ 1 - 1
Classes/Network/FLEXNetworkHistoryTableViewController.m

@@ -283,7 +283,7 @@
     if ((totalRows - indexPath.row) % 2 == 0) {
         cell.backgroundColor = [FLEXColor secondaryBackgroundColor];
     } else {
-        cell.backgroundColor = [FLEXColor systemBackgroundColor];
+        cell.backgroundColor = [FLEXColor primaryBackgroundColor];
     }
 
     return cell;

+ 2 - 2
Classes/Toolbar/FLEXExplorerToolbar.m

@@ -39,7 +39,7 @@
     self = [super initWithFrame:frame];
     if (self) {
         self.backgroundView = [[UIView alloc] init];
-        self.backgroundView.backgroundColor = [FLEXColor systemBackgroundColorWithAlpha:0.95];
+        self.backgroundView.backgroundColor = [FLEXColor secondaryBackgroundColorWithAlpha:0.95];
         [self addSubview:self.backgroundView];
 
         self.dragHandle = [[UIView alloc] init];
@@ -67,7 +67,7 @@
         self.closeItem = [FLEXToolbarItem toolbarItemWithTitle:@"close" image:closeIcon];
 
         self.selectedViewDescriptionContainer = [[UIView alloc] init];
-        self.selectedViewDescriptionContainer.backgroundColor = [FLEXColor secondaryBackgroundColorWithAlpha:0.95];
+        self.selectedViewDescriptionContainer.backgroundColor = [FLEXColor tertiaryBackgroundColorWithAlpha:0.95];
         self.selectedViewDescriptionContainer.hidden = YES;
         [self addSubview:self.selectedViewDescriptionContainer];
 

+ 8 - 3
Classes/Utility/FLEXColor.h

@@ -13,13 +13,16 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface FLEXColor : NSObject
 
-// Background colors
-+ (UIColor *)systemBackgroundColor;
-+ (UIColor *)systemBackgroundColorWithAlpha:(CGFloat)alpha;
+// Background colors, from intense to less intense
++ (UIColor *)primaryBackgroundColor;
++ (UIColor *)primaryBackgroundColorWithAlpha:(CGFloat)alpha;
 
 + (UIColor *)secondaryBackgroundColor;
 + (UIColor *)secondaryBackgroundColorWithAlpha:(CGFloat)alpha;
 
++ (UIColor *)tertiaryBackgroundColor;
++ (UIColor *)tertiaryBackgroundColorWithAlpha:(CGFloat)alpha;
+
 // Text colors
 + (UIColor *)primaryTextColor;
 + (UIColor *)deemphasizedTextColor;
@@ -28,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN
 + (UIColor *)scrollViewBackgroundColor;
 + (UIColor *)iconColor;
 + (UIColor *)borderColor;
++ (UIColor *)toolbarItemHighlightedColor;
++ (UIColor *)toolbarItemSelectedColor;
 
 @end
 

+ 65 - 30
Classes/Utility/FLEXColor.m

@@ -11,66 +11,101 @@
 
 @implementation FLEXColor
 
-static UIColor *colorWithDynamicProvider(UIColor *lightColor, UIColor *darkColor) {
-#if FLEX_AT_LEAST_IOS13_SDK
+#pragma mark - Background Colors
+
++ (UIColor *)primaryBackgroundColor {
     if (@available(iOS 13.0, *)) {
-        return [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull traitCollection) {
-            return (traitCollection.userInterfaceStyle == UIUserInterfaceStyleLight
-                    ? lightColor
-                    : darkColor);
-        }];
+        return [UIColor systemBackgroundColor];
+    } else {
+        return [UIColor whiteColor];
     }
-#endif
-    return lightColor;
 }
 
-#pragma mark - Background Colors
++ (UIColor *)primaryBackgroundColorWithAlpha:(CGFloat)alpha {
+    return [[self primaryBackgroundColor] colorWithAlphaComponent:alpha];
+}
 
-+ (UIColor *)systemBackgroundColor {
-    return [self systemBackgroundColorWithAlpha:1.0];
++ (UIColor *)secondaryBackgroundColor {
+    if (@available(iOS 13.0, *)) {
+        return [UIColor secondarySystemBackgroundColor];
+    } else {
+        return [UIColor colorWithHue:2.0/3.0 saturation:0.02 brightness:0.95 alpha:1];
+    }
 }
 
-+ (UIColor *)systemBackgroundColorWithAlpha:(CGFloat)alpha {
-    return colorWithDynamicProvider([UIColor colorWithWhite:1.0 alpha:alpha],
-                                    [UIColor colorWithWhite:0.0 alpha:alpha]);
++ (UIColor *)secondaryBackgroundColorWithAlpha:(CGFloat)alpha {
+    return [[self secondaryBackgroundColor] colorWithAlphaComponent:alpha];
 }
 
-+ (UIColor *)secondaryBackgroundColor {
-    return [self secondaryBackgroundColorWithAlpha:1.0];
++ (UIColor *)tertiaryBackgroundColor {
+    if (@available(iOS 13.0, *)) {
+        // All the background/fill colors are varying shades
+        // of white and black with really low alpha levels.
+        // We use this instead to avoid alpha issues.
+        return [UIColor systemGray4Color];
+    } else {
+        return [UIColor lightGrayColor];
+    }
 }
 
-+ (UIColor *)secondaryBackgroundColorWithAlpha:(CGFloat)alpha {
-    return colorWithDynamicProvider([UIColor colorWithWhite:0.9 alpha:alpha],
-                                    [UIColor colorWithWhite:0.1 alpha:alpha]);
++ (UIColor *)tertiaryBackgroundColorWithAlpha:(CGFloat)alpha {
+    return [[self tertiaryBackgroundColor] colorWithAlphaComponent:alpha];
 }
 
 #pragma mark - Text colors
 
 + (UIColor *)primaryTextColor {
-    return colorWithDynamicProvider([UIColor blackColor],
-                                    [UIColor whiteColor]);
+    if (@available(iOS 13.0, *)) {
+        return [UIColor labelColor];
+    } else {
+        return [UIColor blackColor];
+    }
 }
 
 + (UIColor *)deemphasizedTextColor {
-    return colorWithDynamicProvider([UIColor lightGrayColor],
-                                    [UIColor darkGrayColor]);
+    if (@available(iOS 13.0, *)) {
+        return [UIColor tertiaryLabelColor];
+    } else {
+        return [UIColor lightGrayColor];
+    }
 }
 
 #pragma mark - UI Element Colors
 
 + (UIColor *)scrollViewBackgroundColor {
-    return colorWithDynamicProvider([UIColor colorWithRed:239.0/255.0 green:239.0/255.0 blue:244.0/255.0 alpha:1.0],
-                                    [UIColor colorWithRed:16.0/255.0 green:16.0/255.0 blue:11.0/255.0 alpha:1.0]);
+    if (@available(iOS 13.0, *)) {
+        return [UIColor systemGroupedBackgroundColor];
+    } else {
+        return [UIColor colorWithHue:2.0/3.0 saturation:0.02 brightness:0.95 alpha:1];
+    }
 }
 
 + (UIColor *)iconColor {
-    return colorWithDynamicProvider([UIColor darkGrayColor],
-                                    [UIColor lightGrayColor]);
+    if (@available(iOS 13.0, *)) {
+        return [UIColor labelColor];
+    } else {
+        return [UIColor blackColor];
+    }
 }
 
 + (UIColor *)borderColor {
-    return colorWithDynamicProvider([UIColor blackColor],
-                                    [UIColor whiteColor]);
+    return [self primaryBackgroundColor];
+}
+
++ (UIColor *)toolbarItemHighlightedColor {
+    if (@available(iOS 13.0, *)) {
+        return [UIColor quaternaryLabelColor];
+    } else {
+        return [UIColor colorWithHue:2.0/3.0 saturation:0.1 brightness:0.25 alpha:0.6];
+    }
+}
+
++ (UIColor *)toolbarItemSelectedColor {
+    if (@available(iOS 13.0, *)) {
+        return [UIColor secondaryLabelColor];
+    } else {
+        return [UIColor colorWithHue:2.0/3.0 saturation:0.1 brightness:0.25 alpha:0.68];
+    }
 }
 
 @end