BTUIKCoinbaseWordmarkVectorArtView.m 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. #import "BTUIKCoinbaseWordmarkVectorArtView.h"
  2. @implementation BTUIKCoinbaseWordmarkVectorArtView
  3. - (instancetype)initWithCoder:(NSCoder *)coder
  4. {
  5. self = [super initWithCoder:coder];
  6. if (self) {
  7. [self doSetup];
  8. }
  9. return self;
  10. }
  11. - (id)init {
  12. self = [super init];
  13. if (self) {
  14. [self doSetup];
  15. }
  16. return self;
  17. }
  18. - (void)doSetup {
  19. self.artDimensions = CGSizeMake(162, 88);
  20. self.opaque = NO;
  21. self.color = [UIColor colorWithRed: 0.053 green: 0.433 blue: 0.7 alpha: 1]; // Default color
  22. }
  23. - (void)setColor:(UIColor *)color {
  24. _color = color;
  25. [self setNeedsDisplay];
  26. }
  27. - (void)drawArt {
  28. //// Assets
  29. {
  30. //// button-coinbase
  31. {
  32. //// Rectangle Drawing
  33. //// logo/coinbase-2
  34. {
  35. //// Bezier Drawing
  36. UIBezierPath* bezierPath = [UIBezierPath bezierPath];
  37. [bezierPath moveToPoint: CGPointMake(20.22, 54)];
  38. [bezierPath addCurveToPoint: CGPointMake(12, 43.98) controlPoint1: CGPointMake(16.06, 54) controlPoint2: CGPointMake(12, 50.93)];
  39. [bezierPath addCurveToPoint: CGPointMake(20.22, 34) controlPoint1: CGPointMake(12, 37.03) controlPoint2: CGPointMake(16.06, 34)];
  40. [bezierPath addCurveToPoint: CGPointMake(25, 35.32) controlPoint1: CGPointMake(22.26, 34) controlPoint2: CGPointMake(23.86, 34.53)];
  41. [bezierPath addLineToPoint: CGPointMake(23.75, 38.14)];
  42. [bezierPath addCurveToPoint: CGPointMake(20.7, 37.21) controlPoint1: CGPointMake(22.99, 37.56) controlPoint2: CGPointMake(21.85, 37.21)];
  43. [bezierPath addCurveToPoint: CGPointMake(15.92, 43.95) controlPoint1: CGPointMake(18.21, 37.21) controlPoint2: CGPointMake(15.92, 39.24)];
  44. [bezierPath addCurveToPoint: CGPointMake(20.7, 50.72) controlPoint1: CGPointMake(15.92, 48.65) controlPoint2: CGPointMake(18.27, 50.72)];
  45. [bezierPath addCurveToPoint: CGPointMake(23.75, 49.79) controlPoint1: CGPointMake(21.85, 50.72) controlPoint2: CGPointMake(22.99, 50.36)];
  46. [bezierPath addLineToPoint: CGPointMake(25, 52.68)];
  47. [bezierPath addCurveToPoint: CGPointMake(20.22, 54) controlPoint1: CGPointMake(23.82, 53.5) controlPoint2: CGPointMake(22.26, 54)];
  48. [bezierPath closePath];
  49. [bezierPath moveToPoint: CGPointMake(36.07, 54)];
  50. [bezierPath addCurveToPoint: CGPointMake(27.62, 44.12) controlPoint1: CGPointMake(30.61, 54) controlPoint2: CGPointMake(27.62, 49.74)];
  51. [bezierPath addCurveToPoint: CGPointMake(36.07, 34.27) controlPoint1: CGPointMake(27.62, 38.49) controlPoint2: CGPointMake(30.61, 34.27)];
  52. [bezierPath addCurveToPoint: CGPointMake(44.52, 44.12) controlPoint1: CGPointMake(41.53, 34.27) controlPoint2: CGPointMake(44.52, 38.49)];
  53. [bezierPath addCurveToPoint: CGPointMake(36.07, 54) controlPoint1: CGPointMake(44.52, 49.74) controlPoint2: CGPointMake(41.53, 54)];
  54. [bezierPath closePath];
  55. [bezierPath moveToPoint: CGPointMake(31, 44)];
  56. [bezierPath addCurveToPoint: CGPointMake(36, 51) controlPoint1: CGPointMake(31, 48.08) controlPoint2: CGPointMake(32.97, 51)];
  57. [bezierPath addCurveToPoint: CGPointMake(41, 44) controlPoint1: CGPointMake(39.03, 51) controlPoint2: CGPointMake(41, 48.08)];
  58. [bezierPath addCurveToPoint: CGPointMake(36, 37) controlPoint1: CGPointMake(41, 39.92) controlPoint2: CGPointMake(39.03, 37)];
  59. [bezierPath addCurveToPoint: CGPointMake(31, 44) controlPoint1: CGPointMake(32.97, 37) controlPoint2: CGPointMake(31, 39.92)];
  60. [bezierPath closePath];
  61. [bezierPath moveToPoint: CGPointMake(51, 32)];
  62. [bezierPath addCurveToPoint: CGPointMake(49, 30) controlPoint1: CGPointMake(49.89, 32) controlPoint2: CGPointMake(49, 31.1)];
  63. [bezierPath addCurveToPoint: CGPointMake(51, 28) controlPoint1: CGPointMake(49, 28.9) controlPoint2: CGPointMake(49.89, 28)];
  64. [bezierPath addCurveToPoint: CGPointMake(53, 30) controlPoint1: CGPointMake(52.11, 28) controlPoint2: CGPointMake(53, 28.9)];
  65. [bezierPath addCurveToPoint: CGPointMake(51, 32) controlPoint1: CGPointMake(53, 31.1) controlPoint2: CGPointMake(52.11, 32)];
  66. [bezierPath closePath];
  67. [bezierPath moveToPoint: CGPointMake(49, 54)];
  68. [bezierPath addLineToPoint: CGPointMake(49, 35)];
  69. [bezierPath addLineToPoint: CGPointMake(53, 35)];
  70. [bezierPath addLineToPoint: CGPointMake(53, 54)];
  71. [bezierPath addLineToPoint: CGPointMake(49, 54)];
  72. [bezierPath addLineToPoint: CGPointMake(49, 54)];
  73. [bezierPath closePath];
  74. [bezierPath moveToPoint: CGPointMake(70, 41)];
  75. [bezierPath addCurveToPoint: CGPointMake(65.5, 37) controlPoint1: CGPointMake(70, 38.71) controlPoint2: CGPointMake(68.28, 37)];
  76. [bezierPath addCurveToPoint: CGPointMake(62, 38) controlPoint1: CGPointMake(64.01, 37) controlPoint2: CGPointMake(62.82, 37.67)];
  77. [bezierPath addLineToPoint: CGPointMake(62, 54)];
  78. [bezierPath addLineToPoint: CGPointMake(58, 54)];
  79. [bezierPath addLineToPoint: CGPointMake(58, 35.38)];
  80. [bezierPath addCurveToPoint: CGPointMake(65.5, 34) controlPoint1: CGPointMake(60, 34.58) controlPoint2: CGPointMake(62.38, 34)];
  81. [bezierPath addCurveToPoint: CGPointMake(74, 40.55) controlPoint1: CGPointMake(71.11, 34) controlPoint2: CGPointMake(74, 36.4)];
  82. [bezierPath addLineToPoint: CGPointMake(74, 54)];
  83. [bezierPath addLineToPoint: CGPointMake(70, 54)];
  84. [bezierPath addLineToPoint: CGPointMake(70, 41)];
  85. [bezierPath closePath];
  86. [bezierPath moveToPoint: CGPointMake(78, 52.66)];
  87. [bezierPath addLineToPoint: CGPointMake(78, 26)];
  88. [bezierPath addLineToPoint: CGPointMake(81.9, 26)];
  89. [bezierPath addLineToPoint: CGPointMake(81.9, 35.15)];
  90. [bezierPath addCurveToPoint: CGPointMake(85.5, 34) controlPoint1: CGPointMake(82.83, 34.72) controlPoint2: CGPointMake(84.18, 34)];
  91. [bezierPath addCurveToPoint: CGPointMake(94, 43.69) controlPoint1: CGPointMake(90.48, 34) controlPoint2: CGPointMake(94, 37.89)];
  92. [bezierPath addCurveToPoint: CGPointMake(84.48, 54) controlPoint1: CGPointMake(94, 50.83) controlPoint2: CGPointMake(90.24, 54)];
  93. [bezierPath addCurveToPoint: CGPointMake(78, 52.66) controlPoint1: CGPointMake(81.97, 54) controlPoint2: CGPointMake(79.5, 53.4)];
  94. [bezierPath closePath];
  95. [bezierPath moveToPoint: CGPointMake(85, 37)];
  96. [bezierPath addCurveToPoint: CGPointMake(82, 37.65) controlPoint1: CGPointMake(83.96, 37) controlPoint2: CGPointMake(82.73, 37.25)];
  97. [bezierPath addLineToPoint: CGPointMake(82, 50.49)];
  98. [bezierPath addCurveToPoint: CGPointMake(84.72, 51) controlPoint1: CGPointMake(82.56, 50.75) controlPoint2: CGPointMake(83.64, 51)];
  99. [bezierPath addCurveToPoint: CGPointMake(90, 43.82) controlPoint1: CGPointMake(87.76, 51) controlPoint2: CGPointMake(90, 48.82)];
  100. [bezierPath addCurveToPoint: CGPointMake(85, 37) controlPoint1: CGPointMake(90, 39.54) controlPoint2: CGPointMake(88.04, 37)];
  101. [bezierPath closePath];
  102. [bezierPath moveToPoint: CGPointMake(97, 48)];
  103. [bezierPath addCurveToPoint: CGPointMake(108, 41.5) controlPoint1: CGPointMake(97, 42.72) controlPoint2: CGPointMake(102.19, 41.82)];
  104. [bezierPath addLineToPoint: CGPointMake(108, 40)];
  105. [bezierPath addCurveToPoint: CGPointMake(104.5, 37) controlPoint1: CGPointMake(108, 37.61) controlPoint2: CGPointMake(106.96, 37)];
  106. [bezierPath addCurveToPoint: CGPointMake(98.9, 38.24) controlPoint1: CGPointMake(102.68, 37) controlPoint2: CGPointMake(100.18, 37.64)];
  107. [bezierPath addLineToPoint: CGPointMake(97.9, 35.6)];
  108. [bezierPath addCurveToPoint: CGPointMake(104.5, 34) controlPoint1: CGPointMake(99.43, 34.93) controlPoint2: CGPointMake(101.93, 34)];
  109. [bezierPath addCurveToPoint: CGPointMake(111.99, 40.7) controlPoint1: CGPointMake(109.1, 34) controlPoint2: CGPointMake(111.99, 36.03)];
  110. [bezierPath addLineToPoint: CGPointMake(111.99, 52.66)];
  111. [bezierPath addCurveToPoint: CGPointMake(105.07, 54) controlPoint1: CGPointMake(110.6, 53.4) controlPoint2: CGPointMake(107.78, 54)];
  112. [bezierPath addCurveToPoint: CGPointMake(97, 48) controlPoint1: CGPointMake(99.54, 54) controlPoint2: CGPointMake(97, 51.73)];
  113. [bezierPath closePath];
  114. [bezierPath moveToPoint: CGPointMake(100.5, 48)];
  115. [bezierPath addCurveToPoint: CGPointMake(105, 51) controlPoint1: CGPointMake(100.5, 50.01) controlPoint2: CGPointMake(102.04, 51)];
  116. [bezierPath addLineToPoint: CGPointMake(108, 51)];
  117. [bezierPath addLineToPoint: CGPointMake(108, 44)];
  118. [bezierPath addCurveToPoint: CGPointMake(100.5, 48) controlPoint1: CGPointMake(104.08, 44.21) controlPoint2: CGPointMake(100.5, 44.62)];
  119. [bezierPath closePath];
  120. [bezierPath moveToPoint: CGPointMake(121.79, 54)];
  121. [bezierPath addCurveToPoint: CGPointMake(116, 52.65) controlPoint1: CGPointMake(119.62, 54) controlPoint2: CGPointMake(117.35, 53.39)];
  122. [bezierPath addLineToPoint: CGPointMake(117.28, 49.65)];
  123. [bezierPath addCurveToPoint: CGPointMake(121.69, 50.9) controlPoint1: CGPointMake(118.24, 50.26) controlPoint2: CGPointMake(120.28, 50.9)];
  124. [bezierPath addCurveToPoint: CGPointMake(125.07, 48.26) controlPoint1: CGPointMake(123.72, 50.9) controlPoint2: CGPointMake(125.07, 49.86)];
  125. [bezierPath addCurveToPoint: CGPointMake(121.76, 45.12) controlPoint1: CGPointMake(125.07, 46.51) controlPoint2: CGPointMake(123.66, 45.84)];
  126. [bezierPath addCurveToPoint: CGPointMake(116.48, 39.38) controlPoint1: CGPointMake(119.28, 44.16) controlPoint2: CGPointMake(116.48, 42.98)];
  127. [bezierPath addCurveToPoint: CGPointMake(123, 34) controlPoint1: CGPointMake(116.48, 36.21) controlPoint2: CGPointMake(118.86, 34)];
  128. [bezierPath addCurveToPoint: CGPointMake(128.41, 35.35) controlPoint1: CGPointMake(125.24, 34) controlPoint2: CGPointMake(127.1, 34.57)];
  129. [bezierPath addLineToPoint: CGPointMake(127.24, 38.06)];
  130. [bezierPath addCurveToPoint: CGPointMake(123.41, 36.92) controlPoint1: CGPointMake(126.41, 37.53) controlPoint2: CGPointMake(124.76, 36.92)];
  131. [bezierPath addCurveToPoint: CGPointMake(120.34, 39.38) controlPoint1: CGPointMake(121.45, 36.92) controlPoint2: CGPointMake(120.34, 37.99)];
  132. [bezierPath addCurveToPoint: CGPointMake(123.55, 42.45) controlPoint1: CGPointMake(120.34, 41.13) controlPoint2: CGPointMake(121.72, 41.74)];
  133. [bezierPath addCurveToPoint: CGPointMake(129, 48.3) controlPoint1: CGPointMake(126.14, 43.45) controlPoint2: CGPointMake(129, 44.55)];
  134. [bezierPath addCurveToPoint: CGPointMake(121.79, 54) controlPoint1: CGPointMake(129, 51.75) controlPoint2: CGPointMake(126.45, 54)];
  135. [bezierPath closePath];
  136. [bezierPath moveToPoint: CGPointMake(136, 46)];
  137. [bezierPath addCurveToPoint: CGPointMake(142.08, 50.94) controlPoint1: CGPointMake(136.39, 49.41) controlPoint2: CGPointMake(138.84, 50.94)];
  138. [bezierPath addCurveToPoint: CGPointMake(147.39, 49.78) controlPoint1: CGPointMake(144.01, 50.94) controlPoint2: CGPointMake(146.08, 50.48)];
  139. [bezierPath addLineToPoint: CGPointMake(148.54, 52.66)];
  140. [bezierPath addCurveToPoint: CGPointMake(141.83, 54) controlPoint1: CGPointMake(147.04, 53.44) controlPoint2: CGPointMake(144.47, 54)];
  141. [bezierPath addCurveToPoint: CGPointMake(132, 44.04) controlPoint1: CGPointMake(135.77, 54) controlPoint2: CGPointMake(132, 50.1)];
  142. [bezierPath addCurveToPoint: CGPointMake(141, 34) controlPoint1: CGPointMake(132, 38.24) controlPoint2: CGPointMake(135.62, 34)];
  143. [bezierPath addCurveToPoint: CGPointMake(149, 42.6) controlPoint1: CGPointMake(145.99, 34) controlPoint2: CGPointMake(149, 37.5)];
  144. [bezierPath addCurveToPoint: CGPointMake(148.96, 44.04) controlPoint1: CGPointMake(149, 43.06) controlPoint2: CGPointMake(149, 43.55)];
  145. [bezierPath addLineToPoint: CGPointMake(136, 46)];
  146. [bezierPath closePath];
  147. [bezierPath moveToPoint: CGPointMake(140.98, 37.08)];
  148. [bezierPath addCurveToPoint: CGPointMake(135.95, 43.27) controlPoint1: CGPointMake(137.98, 37.08) controlPoint2: CGPointMake(136.02, 39.33)];
  149. [bezierPath addLineToPoint: CGPointMake(145.26, 42)];
  150. [bezierPath addCurveToPoint: CGPointMake(140.98, 37.08) controlPoint1: CGPointMake(145.22, 38.7) controlPoint2: CGPointMake(143.54, 37.08)];
  151. [bezierPath addLineToPoint: CGPointMake(140.98, 37.08)];
  152. [bezierPath closePath];
  153. bezierPath.miterLimit = 4;
  154. bezierPath.usesEvenOddFillRule = YES;
  155. [self.color setFill];
  156. [bezierPath fill];
  157. }
  158. }
  159. }
  160. }
  161. - (void)updateConstraints {
  162. NSLayoutConstraint *aspectRatioConstraint = [NSLayoutConstraint constraintWithItem:self
  163. attribute:NSLayoutAttributeWidth
  164. relatedBy:NSLayoutRelationEqual
  165. toItem:self
  166. attribute:NSLayoutAttributeHeight
  167. multiplier:(self.artDimensions.width / self.artDimensions.height)
  168. constant:0.0f];
  169. aspectRatioConstraint.priority = UILayoutPriorityRequired;
  170. [self addConstraints:@[aspectRatioConstraint]];
  171. [super updateConstraints];
  172. }
  173. - (UILayoutPriority)contentCompressionResistancePriorityForAxis:(__unused UILayoutConstraintAxis)axis {
  174. return UILayoutPriorityRequired;
  175. }
  176. @end