YMEmptyBaseView.m 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. //
  2. // YMEmptyBaseView.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2023/11/6.
  6. //
  7. #import "YMEmptyBaseView.h"
  8. @interface YMEmptyBaseView ()
  9. @end
  10. @implementation YMEmptyBaseView
  11. #pragma mark - ------------------ Life Cycle ------------------
  12. - (instancetype)init
  13. {
  14. self = [super init];
  15. if (self) {
  16. [self initialize];
  17. [self prepare];
  18. }
  19. return self;
  20. }
  21. - (void)initialize{
  22. }
  23. - (void)prepare{
  24. self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
  25. }
  26. - (void)layoutSubviews
  27. {
  28. [super layoutSubviews];
  29. UIView *view = self.superview;
  30. //不是UIView,不做操作
  31. if (view && [view isKindOfClass:[UIView class]]){
  32. self.ym_empty_width = view.ym_empty_width;
  33. self.ym_empty_height = view.ym_empty_height;
  34. }
  35. [self setupSubviews];
  36. }
  37. - (void)setupSubviews{
  38. }
  39. - (void)willMoveToSuperview:(UIView *)newSuperview
  40. {
  41. [super willMoveToSuperview:newSuperview];
  42. //不是UIView,不做操作
  43. if (newSuperview && ![newSuperview isKindOfClass:[UIView class]]) return;
  44. if (newSuperview) {
  45. self.ym_empty_width = newSuperview.ym_empty_width;
  46. self.ym_empty_height = newSuperview.ym_empty_height;
  47. }
  48. }
  49. #pragma mark - ------------------ 实例化 ------------------
  50. + (instancetype)emptyActionViewWithImage:(UIImage *)image
  51. titleStr:(NSString *)titleStr
  52. detailStr:(NSString *)detailStr
  53. btnTitleStr:(NSString *)btnTitleStr
  54. target:(id)target
  55. action:(SEL)action{
  56. YMEmptyBaseView *emptyView = [[self alloc] init];
  57. [emptyView creatEmptyViewWithImage:image imageStr:nil titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:target action:action btnClickBlock:nil];
  58. return emptyView;
  59. }
  60. + (instancetype)emptyActionViewWithImage:(UIImage *)image
  61. titleStr:(NSString *)titleStr
  62. detailStr:(NSString *)detailStr
  63. btnTitleStr:(NSString *)btnTitleStr
  64. btnClickBlock:(YMActionTapBlock)btnClickBlock{
  65. YMEmptyBaseView *emptyView = [[self alloc] init];
  66. [emptyView creatEmptyViewWithImage:image imageStr:nil titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:nil action:nil btnClickBlock:btnClickBlock];
  67. return emptyView;
  68. }
  69. + (instancetype)emptyActionViewWithImageStr:(NSString *)imageStr
  70. titleStr:(NSString *)titleStr
  71. detailStr:(NSString *)detailStr
  72. btnTitleStr:(NSString *)btnTitleStr
  73. target:(id)target
  74. action:(SEL)action{
  75. YMEmptyBaseView *emptyView = [[self alloc] init];
  76. [emptyView creatEmptyViewWithImage:nil imageStr:imageStr titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:target action:action btnClickBlock:nil];
  77. return emptyView;
  78. }
  79. + (instancetype)emptyActionViewWithImageStr:(NSString *)imageStr
  80. titleStr:(NSString *)titleStr
  81. detailStr:(NSString *)detailStr
  82. btnTitleStr:(NSString *)btnTitleStr
  83. btnClickBlock:(YMActionTapBlock)btnClickBlock{
  84. YMEmptyBaseView *emptyView = [[self alloc] init];
  85. [emptyView creatEmptyViewWithImage:nil imageStr:imageStr titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:nil action:nil btnClickBlock:btnClickBlock];
  86. return emptyView;
  87. }
  88. + (instancetype)emptyViewWithImage:(UIImage *)image
  89. titleStr:(NSString *)titleStr
  90. detailStr:(NSString *)detailStr{
  91. YMEmptyBaseView *emptyView = [[self alloc] init];
  92. [emptyView creatEmptyViewWithImage:image imageStr:nil titleStr:titleStr detailStr:detailStr btnTitleStr:nil target:nil action:nil btnClickBlock:nil];
  93. return emptyView;
  94. }
  95. + (instancetype)emptyViewWithImageStr:(NSString *)imageStr
  96. titleStr:(NSString *)titleStr
  97. detailStr:(NSString *)detailStr{
  98. YMEmptyBaseView *emptyView = [[self alloc] init];
  99. [emptyView creatEmptyViewWithImage:nil imageStr:imageStr titleStr:titleStr detailStr:detailStr btnTitleStr:nil target:nil action:nil btnClickBlock:nil];
  100. return emptyView;
  101. }
  102. + (instancetype)emptyViewWithCustomView:(UIView *)customView{
  103. YMEmptyBaseView *emptyView = [[self alloc] init];
  104. [emptyView creatEmptyViewWithCustomView:customView];
  105. return emptyView;
  106. }
  107. - (void)creatEmptyViewWithImage:(UIImage *)image imageStr:(NSString *)imageStr titleStr:(NSString *)titleStr detailStr:(NSString *)detailStr btnTitleStr:(NSString *)btnTitleStr target:(id)target action:(SEL)action btnClickBlock:(YMActionTapBlock)btnClickBlock{
  108. _image = image;
  109. _imageStr = imageStr;
  110. _titleStr = titleStr;
  111. _detailStr = detailStr;
  112. _btnTitleStr = btnTitleStr;
  113. _actionBtnTarget = target;
  114. _actionBtnAction = action;
  115. _btnClickBlock = btnClickBlock;
  116. //内容物背景视图
  117. if (!_contentView) {
  118. _contentView = [[UIView alloc] initWithFrame:CGRectZero];
  119. [self addSubview:_contentView];
  120. }
  121. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEmptyView:)];
  122. [self addGestureRecognizer:tap];
  123. }
  124. - (void)creatEmptyViewWithCustomView:(UIView *)customView{
  125. //内容物背景视图
  126. if (!_contentView) {
  127. _contentView = [[UIView alloc] initWithFrame:CGRectZero];
  128. [self addSubview:_contentView];
  129. }
  130. if (!_customView) {
  131. [_contentView addSubview:customView];
  132. }
  133. _customView = customView;
  134. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEmptyView:)];
  135. [self addGestureRecognizer:tap];
  136. }
  137. #pragma mark - ------------------ Event Method ------------------
  138. - (void)tapEmptyView:(UITapGestureRecognizer *)tap{
  139. if (_tapEmptyViewBlock) {
  140. _tapEmptyViewBlock();
  141. }
  142. }
  143. #pragma mark - ------------------ Setter ------------------
  144. - (void)setImage:(UIImage *)image{
  145. _image = image;
  146. [self setNeedsLayout];
  147. }
  148. - (void)setImageStr:(NSString *)imageStr{
  149. _imageStr = imageStr;
  150. [self setNeedsLayout];
  151. }
  152. - (void)setTitleStr:(NSString *)titleStr{
  153. _titleStr = titleStr;
  154. [self setNeedsLayout];
  155. }
  156. - (void)setDetailStr:(NSString *)detailStr{
  157. _detailStr = detailStr;
  158. [self setNeedsLayout];
  159. }
  160. - (void)setBtnTitleStr:(NSString *)btnTitleStr{
  161. _btnTitleStr = btnTitleStr;
  162. [self setNeedsLayout];
  163. }
  164. @end