ZFTableViewCellLayout.m 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. //
  2. // ZFTableViewCellLayout.m
  3. // ZFPlayer
  4. //
  5. // Created by 紫枫 on 2018/5/22.
  6. // Copyright © 2018年 紫枫. All rights reserved.
  7. //
  8. #import "ZFTableViewCellLayout.h"
  9. #import "NSString+Size.h"
  10. @interface ZFTableViewCellLayout ()
  11. @property (nonatomic, assign) CGRect headerRect;
  12. @property (nonatomic, assign) CGRect nickNameRect;
  13. @property (nonatomic, assign) CGRect videoRect;
  14. @property (nonatomic, assign) CGRect playBtnRect;
  15. @property (nonatomic, assign) CGRect titleLabelRect;
  16. @property (nonatomic, assign) CGRect maskViewRect;
  17. @property (nonatomic, assign) BOOL isVerticalVideo;
  18. @property (nonatomic, assign) CGFloat height;
  19. @end
  20. @implementation ZFTableViewCellLayout
  21. - (instancetype)initWithData:(ZFTableData *)data {
  22. self = [super init];
  23. if (self) {
  24. _data = data;
  25. CGFloat min_x = 0;
  26. CGFloat min_y = 0;
  27. CGFloat min_w = 0;
  28. CGFloat min_h = 0;
  29. CGFloat min_view_w = [UIScreen mainScreen].bounds.size.width;
  30. CGFloat margin = 10;
  31. min_x = 10;
  32. min_y = 10;
  33. min_w = 30;
  34. min_h = min_w;
  35. self.headerRect = CGRectMake(min_x, min_y, min_w, min_h);
  36. min_x = CGRectGetMaxX(self.headerRect) + 10;
  37. min_y = 18;
  38. min_w = [data.nick_name textSizeWithFont:[UIFont systemFontOfSize:15] limitWidth:min_view_w-2*margin-min_x].width;
  39. min_h = 15;
  40. self.nickNameRect = CGRectMake(min_x, min_y, min_w, min_h);
  41. min_x = 0;
  42. min_y = CGRectGetMaxY(self.headerRect)+margin;
  43. min_w = min_view_w;
  44. min_h = self.videoHeight;
  45. self.videoRect = CGRectMake(min_x, min_y, min_w, min_h);
  46. min_w = 44;
  47. min_h = min_w;
  48. min_x = (CGRectGetWidth(self.videoRect)-min_w)/2;
  49. min_y = (CGRectGetHeight(self.videoRect)-min_h)/2;
  50. self.playBtnRect = CGRectMake(min_x, min_y, min_w, min_h);
  51. min_x = margin;
  52. min_y = CGRectGetMaxY(self.videoRect) + margin;
  53. min_w = CGRectGetWidth(self.videoRect) - 2*margin;
  54. min_h = [data.title textSizeWithFont:[UIFont systemFontOfSize:15] numberOfLines:0 constrainedWidth:min_w].height;
  55. self.titleLabelRect = CGRectMake(min_x, min_y, min_w, min_h);
  56. self.height = CGRectGetMaxY(self.titleLabelRect)+margin;
  57. min_x = 0;
  58. min_y = 0;
  59. min_w = min_view_w;
  60. min_h = self.height;
  61. self.maskViewRect = CGRectMake(min_x, min_y, min_w, min_h);
  62. }
  63. return self;
  64. }
  65. - (instancetype)initWXData:(ZFTableData *)data {
  66. if (self) {
  67. _data = data;
  68. CGFloat min_x = 0;
  69. CGFloat min_y = 0;
  70. CGFloat min_w = 0;
  71. CGFloat min_h = 0;
  72. CGFloat min_view_w = [UIScreen mainScreen].bounds.size.width;
  73. CGFloat margin = 10;
  74. min_x = 10;
  75. min_y = 10;
  76. min_w = 30;
  77. min_h = min_w;
  78. self.headerRect = CGRectMake(min_x, min_y, min_w, min_h);
  79. min_x = CGRectGetMaxX(self.headerRect) + 10;
  80. min_y = 18;
  81. min_w = [data.nick_name textSizeWithFont:[UIFont systemFontOfSize:15] limitWidth:min_view_w-2*margin-min_x].width;
  82. min_h = 15;
  83. self.nickNameRect = CGRectMake(min_x, min_y, min_w, min_h);
  84. min_x = 20;
  85. min_y = CGRectGetMaxY(self.headerRect)+margin;
  86. min_w = 200;
  87. min_h = min_w;
  88. self.videoRect = CGRectMake(min_x, min_y, min_w, min_h);
  89. min_w = 44;
  90. min_h = min_w;
  91. min_x = (CGRectGetWidth(self.videoRect)-min_w)/2;
  92. min_y = (CGRectGetHeight(self.videoRect)-min_h)/2;
  93. self.playBtnRect = CGRectMake(min_x, min_y, min_w, min_h);
  94. min_x = margin;
  95. min_y = CGRectGetMaxY(self.videoRect) + margin;
  96. min_w = min_view_w - 2*margin;
  97. min_h = [data.title textSizeWithFont:[UIFont systemFontOfSize:15] numberOfLines:0 constrainedWidth:min_w].height;
  98. self.titleLabelRect = CGRectMake(min_x, min_y, min_w, min_h);
  99. self.height = CGRectGetMaxY(self.titleLabelRect)+margin;
  100. min_x = 0;
  101. min_y = 0;
  102. min_w = min_view_w;
  103. min_h = self.height;
  104. self.maskViewRect = CGRectMake(min_x, min_y, min_w, min_h);
  105. }
  106. return self;
  107. }
  108. - (BOOL)isVerticalVideo {
  109. return _data.video_width < _data.video_height;
  110. }
  111. - (CGFloat)videoHeight {
  112. CGFloat videoHeight;
  113. if (self.isVerticalVideo) {
  114. videoHeight = [UIScreen mainScreen].bounds.size.width * 0.6 * self.data.video_height/self.data.video_width;
  115. } else {
  116. videoHeight = [UIScreen mainScreen].bounds.size.width * self.data.video_height/self.data.video_width;
  117. }
  118. return videoHeight;
  119. }
  120. @end