YMReportEvidenceCell.m 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // YMReportEvidenceCell.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/3/5.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMReportEvidenceCell.h"
  9. #import "YMReportEvidenceCellViewModel.h"
  10. @interface YMReportEvidenceCell ()
  11. /// ViewModel
  12. @property (nonatomic, strong) YMReportEvidenceCellViewModel *viewModel;
  13. /// 基础视图
  14. @property (nonatomic, strong) UIView *baseView;
  15. /// 预览图
  16. @property (nonatomic, strong) UIImageView *previewImage;
  17. /// 选择图
  18. @property (nonatomic, strong) UIImageView *selectedImage;
  19. /// 删除按钮
  20. @property (nonatomic, strong) UIButton *deleteBtn;
  21. @end
  22. @implementation YMReportEvidenceCell
  23. - (void)ym_setupViews{
  24. self.contentView.backgroundColor = UIColor.clearColor;
  25. self.backgroundColor = UIColor.clearColor;
  26. [self.contentView addSubview:self.baseView];
  27. [self.baseView addSubview:self.selectedImage];
  28. [self.baseView addSubview:self.previewImage];
  29. [self.baseView addSubview:self.deleteBtn];
  30. [self setNeedsUpdateConstraints];
  31. [self updateConstraintsIfNeeded];
  32. }
  33. - (void)updateConstraints {
  34. [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
  35. make.top.equalTo(self.contentView);
  36. make.left.equalTo(self.contentView);
  37. make.right.equalTo(self.contentView);
  38. make.bottom.equalTo(self.contentView);
  39. }];
  40. [self.selectedImage mas_makeConstraints:^(MASConstraintMaker *make) {
  41. make.edges.equalTo(self.baseView);
  42. }];
  43. [self.previewImage mas_makeConstraints:^(MASConstraintMaker *make) {
  44. make.edges.equalTo(self.baseView);
  45. }];
  46. [self.deleteBtn mas_makeConstraints:^(MASConstraintMaker *make) {
  47. make.top.equalTo(self.baseView).offset(adapt(5));
  48. make.right.equalTo(self.baseView).offset(adapt(-5));
  49. make.width.height.mas_equalTo(adapt(20));
  50. }];
  51. [super updateConstraints];
  52. }
  53. - (void)ym_bindViewModel:(YMReportEvidenceCellViewModel*)viewModel{
  54. if (!viewModel) {
  55. return;
  56. }
  57. _viewModel = viewModel;
  58. if (!self.viewModel.isAddCell) {
  59. self.previewImage.hidden = NO;
  60. if (OCStringIsEmpty(self.viewModel.networkAlbum)) {
  61. self.previewImage.image = self.viewModel.localAlbum;
  62. } else {
  63. [self.previewImage sd_setImageWithURL:[LCTools getImageUrlWithAddress:self.viewModel.networkAlbum]];
  64. }
  65. }else{
  66. self.previewImage.hidden = YES;
  67. }
  68. self.deleteBtn.hidden = self.viewModel.isHideDeleteButton;
  69. }
  70. - (UIView *)baseView{
  71. if (!_baseView) {
  72. _baseView = [[UIView alloc]init];
  73. }
  74. return _baseView;
  75. }
  76. - (UIImageView *)previewImage{
  77. if (!_previewImage) {
  78. _previewImage = [[UIImageView alloc]init];;
  79. _previewImage.contentMode = UIViewContentModeScaleAspectFill;
  80. _previewImage.layer.cornerRadius = adapt(10);
  81. _previewImage.layer.masksToBounds = YES;
  82. _previewImage.userInteractionEnabled = YES;
  83. }
  84. return _previewImage;
  85. }
  86. - (UIImageView *)selectedImage{
  87. if (!_selectedImage) {
  88. _selectedImage = [[UIImageView alloc]init];;
  89. _selectedImage.image = ImageByName(@"ym_report_add_icon");
  90. _selectedImage.contentMode = UIViewContentModeScaleAspectFill;
  91. _selectedImage.layer.cornerRadius = adapt(10);
  92. _selectedImage.layer.masksToBounds = YES;
  93. _selectedImage.userInteractionEnabled = YES;
  94. }
  95. return _selectedImage;
  96. }
  97. - (UIButton *)deleteBtn{
  98. if (!_deleteBtn) {
  99. _deleteBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  100. [_deleteBtn setBackgroundImage:ImageByName(@"ym_report_delete_icon") forState:UIControlStateNormal];
  101. _deleteBtn.hidden = YES;
  102. WS(weakSelf)
  103. [[[_deleteBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id sender) {
  104. if (weakSelf.viewModel.removeReportEvidenceBlock) {
  105. weakSelf.viewModel.removeReportEvidenceBlock();
  106. }
  107. }];
  108. }
  109. return _deleteBtn;
  110. }
  111. @end