FLEXColor.m 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // FLEXColor.m
  3. // FLEX
  4. //
  5. // Created by Benny Wong on 6/18/19.
  6. // Copyright © 2019 Flipboard. All rights reserved.
  7. //
  8. #import "FLEXColor.h"
  9. #import "FLEXUtility.h"
  10. @implementation FLEXColor
  11. static UIColor *colorWithDynamicProvider(UIColor *lightColor, UIColor *darkColor) {
  12. #if FLEX_AT_LEAST_IOS13_SDK
  13. if (@available(iOS 13.0, *)) {
  14. return [UIColor colorWithDynamicProvider:^UIColor * _Nonnull(UITraitCollection * _Nonnull traitCollection) {
  15. return (traitCollection.userInterfaceStyle == UIUserInterfaceStyleLight
  16. ? lightColor
  17. : darkColor);
  18. }];
  19. }
  20. #endif
  21. return lightColor;
  22. }
  23. #pragma mark - Background Colors
  24. + (UIColor *)systemBackgroundColor {
  25. return [self systemBackgroundColorWithAlpha:1.0];
  26. }
  27. + (UIColor *)systemBackgroundColorWithAlpha:(CGFloat)alpha {
  28. return colorWithDynamicProvider([UIColor colorWithWhite:1.0 alpha:alpha],
  29. [UIColor colorWithWhite:0.0 alpha:alpha]);
  30. }
  31. + (UIColor *)secondaryBackgroundColor {
  32. return [self secondaryBackgroundColorWithAlpha:1.0];
  33. }
  34. + (UIColor *)secondaryBackgroundColorWithAlpha:(CGFloat)alpha {
  35. return colorWithDynamicProvider([UIColor colorWithWhite:0.9 alpha:alpha],
  36. [UIColor colorWithWhite:0.1 alpha:alpha]);
  37. }
  38. #pragma mark - Text colors
  39. + (UIColor *)primaryTextColor {
  40. return colorWithDynamicProvider([UIColor blackColor],
  41. [UIColor whiteColor]);
  42. }
  43. + (UIColor *)deemphasizedTextColor {
  44. return colorWithDynamicProvider([UIColor lightGrayColor],
  45. [UIColor darkGrayColor]);
  46. }
  47. #pragma mark - UI Element Colors
  48. + (UIColor *)scrollViewBackgroundColor {
  49. return colorWithDynamicProvider([UIColor colorWithRed:239.0/255.0 green:239.0/255.0 blue:244.0/255.0 alpha:1.0],
  50. [UIColor colorWithRed:16.0/255.0 green:16.0/255.0 blue:11.0/255.0 alpha:1.0]);
  51. }
  52. + (UIColor *)iconColor {
  53. return colorWithDynamicProvider([UIColor darkGrayColor],
  54. [UIColor lightGrayColor]);
  55. }
  56. + (UIColor *)borderColor {
  57. return colorWithDynamicProvider([UIColor blackColor],
  58. [UIColor whiteColor]);
  59. }
  60. @end