NAKPlaybackIndicatorViewStyle.m 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. //
  2. // NAKPlaybackIndicatorViewStyle.m
  3. // NAKPlaybackIndicatorView
  4. //
  5. // Created by Yuji Nakayama on 7/27/17.
  6. // Copyright © 2017 Yuji Nakayama. All rights reserved.
  7. //
  8. #import "NAKPlaybackIndicatorViewStyle.h"
  9. @implementation NAKPlaybackIndicatorViewStyle
  10. + (instancetype)defaultStyle
  11. {
  12. return [self iOS7Style];
  13. }
  14. + (instancetype)iOS7Style
  15. {
  16. return [[self alloc] init];
  17. }
  18. + (instancetype)iOS10Style
  19. {
  20. return [[self alloc] initWithBarCount:4
  21. barWidth:2.8
  22. maxBarSpacing:1.7
  23. maxPeakBarHeight:12.0];
  24. }
  25. - (instancetype)init
  26. {
  27. return [self initWithBarCount:3
  28. barWidth:3.0
  29. maxBarSpacing:1.5
  30. maxPeakBarHeight:12.0];
  31. }
  32. - (instancetype)initWithBarCount:(NSUInteger)barCount
  33. barWidth:(CGFloat)barWidth
  34. maxBarSpacing:(CGFloat)maxBarSpacing
  35. maxPeakBarHeight:(CGFloat)maxPeakBarHeight
  36. {
  37. return [self initWithBarCount:barCount
  38. barWidth:barWidth
  39. maxBarSpacing:maxBarSpacing
  40. idleBarHeight:round(barWidth)
  41. minPeakBarHeight:maxPeakBarHeight / 2
  42. maxPeakBarHeight:maxPeakBarHeight];
  43. }
  44. - (instancetype)initWithBarCount:(NSUInteger)barCount
  45. barWidth:(CGFloat)barWidth
  46. maxBarSpacing:(CGFloat)maxBarSpacing
  47. idleBarHeight:(CGFloat)idleBarHeight
  48. minPeakBarHeight:(CGFloat)minPeakBarHeight
  49. maxPeakBarHeight:(CGFloat)maxPeakBarHeight
  50. {
  51. self = [super init];
  52. if (self) {
  53. _barCount = barCount;
  54. _barWidth = barWidth;
  55. _maxBarSpacing = maxBarSpacing;
  56. _idleBarHeight = idleBarHeight;
  57. _minPeakBarHeight = minPeakBarHeight;
  58. _maxPeakBarHeight = maxPeakBarHeight;
  59. }
  60. return self;
  61. }
  62. - (CGFloat)actualBarSpacing
  63. {
  64. CGFloat screenScale = [[UIScreen mainScreen] scale];
  65. return floor((self.maxBarSpacing + self.barWidth) * screenScale) / screenScale - self.barWidth;
  66. }
  67. @end