Procházet zdrojové kódy

Wrap iOS 13 UIColor APIs in #if FLEX_AT_LEAST_IOS13_SDK

Tanner Bennett před 7 roky
rodič
revize
81be8e1316
1 změnil soubory, kde provedl 38 přidání a 48 odebrání
  1. 38 48
      Classes/Utility/FLEXColor.m

+ 38 - 48
Classes/Utility/FLEXColor.m

@@ -9,16 +9,26 @@
 #import "FLEXColor.h"
 #import "FLEXUtility.h"
 
+#if FLEX_AT_LEAST_IOS13_SDK
+#define FLEXDynamicColor(dynamic, static) ({ \
+    UIColor *c; \
+    if (@available(iOS 13, *)) { \
+        c = [UIColor dynamic]; \
+    } else { \
+        c = [UIColor static]; \
+    } \
+    c; \
+});
+#else
+#define FLEXDynamicColor(dynamic, static) [UIColor static]
+#endif
+
 @implementation FLEXColor
 
 #pragma mark - Background Colors
 
 + (UIColor *)primaryBackgroundColor {
-    if (@available(iOS 13.0, *)) {
-        return [UIColor systemBackgroundColor];
-    } else {
-        return [UIColor whiteColor];
-    }
+    return FLEXDynamicColor(systemBackgroundColor, whiteColor);
 }
 
 + (UIColor *)primaryBackgroundColorWithAlpha:(CGFloat)alpha {
@@ -26,11 +36,10 @@
 }
 
 + (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];
-    }
+    return FLEXDynamicColor(
+        secondarySystemBackgroundColor,
+        colorWithHue:2.0/3.0 saturation:0.02 brightness:0.95 alpha:1
+    );
 }
 
 + (UIColor *)secondaryBackgroundColorWithAlpha:(CGFloat)alpha {
@@ -38,14 +47,10 @@
 }
 
 + (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];
-    }
+    // 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 {
@@ -55,37 +60,24 @@
 #pragma mark - Text colors
 
 + (UIColor *)primaryTextColor {
-    if (@available(iOS 13.0, *)) {
-        return [UIColor labelColor];
-    } else {
-        return [UIColor blackColor];
-    }
+    return FLEXDynamicColor(labelColor, blackColor);
 }
 
 + (UIColor *)deemphasizedTextColor {
-    if (@available(iOS 13.0, *)) {
-        return [UIColor tertiaryLabelColor];
-    } else {
-        return [UIColor lightGrayColor];
-    }
+    return FLEXDynamicColor(tertiaryLabelColor, lightGrayColor);
 }
 
 #pragma mark - UI Element Colors
 
 + (UIColor *)scrollViewBackgroundColor {
-    if (@available(iOS 13.0, *)) {
-        return [UIColor systemGroupedBackgroundColor];
-    } else {
-        return [UIColor colorWithHue:2.0/3.0 saturation:0.02 brightness:0.95 alpha:1];
-    }
+    return FLEXDynamicColor(
+        systemGroupedBackgroundColor,
+        colorWithHue:2.0/3.0 saturation:0.02 brightness:0.95 alpha:1
+    );
 }
 
 + (UIColor *)iconColor {
-    if (@available(iOS 13.0, *)) {
-        return [UIColor labelColor];
-    } else {
-        return [UIColor blackColor];
-    }
+    return FLEXDynamicColor(labelColor, blackColor);
 }
 
 + (UIColor *)borderColor {
@@ -93,19 +85,17 @@
 }
 
 + (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];
-    }
+    return FLEXDynamicColor(
+        quaternaryLabelColor,
+        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];
-    }
+    return FLEXDynamicColor(
+        secondaryLabelColor,
+        colorWithHue:2.0/3.0 saturation:0.1 brightness:0.25 alpha:0.68
+    );
 }
 
 @end