YMReportRemarkView.m 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. //
  2. // YMReportRemarkView.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/3/5.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMReportRemarkView.h"
  9. #import "YMReportViewModel.h"
  10. @interface YMReportRemarkView ()
  11. /// 举报VM
  12. @property (nonatomic, strong) YMReportViewModel *viewModel;
  13. /// 简介文本框
  14. @property (nonatomic, strong) YMTextView *reportRemarkTextView;
  15. /// 简介上限标签
  16. @property (nonatomic, strong) UILabel *reportRemarkLimitLb;
  17. @end
  18. @implementation YMReportRemarkView
  19. - (void)ym_setupViews{
  20. [self addSubview:self.reportRemarkTextView];
  21. [self addSubview:self.reportRemarkLimitLb];
  22. [self setNeedsUpdateConstraints];
  23. [self updateConstraintsIfNeeded];
  24. }
  25. - (void)updateConstraints{
  26. [self.reportRemarkTextView mas_makeConstraints:^(MASConstraintMaker *make) {
  27. make.top.equalTo(self).offset(adapt(15));
  28. make.left.equalTo(self).offset(adapt(15));
  29. make.right.equalTo(self).offset(adapt(-15));
  30. make.bottom.equalTo(self).offset(adapt(-15));
  31. make.height.mas_equalTo(adapt(160));
  32. }];
  33. [self.reportRemarkLimitLb mas_makeConstraints:^(MASConstraintMaker *make) {
  34. make.right.equalTo(self).offset(adapt(-30));
  35. make.bottom.equalTo(self).offset(adapt(-30));
  36. make.height.mas_equalTo(adapt(15));
  37. }];
  38. [super updateConstraints];
  39. }
  40. - (void)ym_bindViewModel:(YMReportViewModel *)viewModel{
  41. if (!viewModel) {
  42. return;
  43. }
  44. _viewModel = viewModel;
  45. @weakify(self)
  46. [[[[RACObserve(self.viewModel, reportRemarkMaxLength) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSNumber * reportRemarkMaxLength) {
  47. @strongify(self)
  48. self.reportRemarkTextView.maxLength = [reportRemarkMaxLength intValue];
  49. }];
  50. [self.reportRemarkTextView addTextDidChangeHandler:^(YMTextView * _Nonnull textView) {
  51. @strongify(self)
  52. self.reportRemarkLimitLb.text = stringFormat(@"%ld/%ld",textView.formatText.length,self.viewModel.reportRemarkMaxLength);
  53. [self.viewModel.getReportTextSubject sendNext:textView.formatText];
  54. }];
  55. }
  56. - (YMTextView *)reportRemarkTextView {
  57. if (!_reportRemarkTextView) {
  58. _reportRemarkTextView = [[YMTextView alloc]init];
  59. _reportRemarkTextView.ym_textContainerInset = UIEdgeInsetsMake(adapt(10), adapt(10), adapt(35), adapt(10));
  60. _reportRemarkTextView.textColor = HexColorFromRGB(0x333333);
  61. _reportRemarkTextView.tintColor = HexColorFromRGB(0xfd7bc5);
  62. _reportRemarkTextView.font = LCFont(13);
  63. _reportRemarkTextView.placeholder = @"提供更多信息有助于举报快速处理~";
  64. _reportRemarkTextView.placeholderFont = LCFont(13);
  65. _reportRemarkTextView.placeholderColor = HexColorFromRGB(0xbababc);
  66. _reportRemarkTextView.minHeight = adapt(160);
  67. _reportRemarkTextView.backgroundColor = HexColorFromRGB(0xf7f8fa);
  68. _reportRemarkTextView.layer.cornerRadius = adapt(8);
  69. }
  70. return _reportRemarkTextView;
  71. }
  72. - (UILabel *)reportRemarkLimitLb{
  73. if (!_reportRemarkLimitLb) {
  74. _reportRemarkLimitLb = [[UILabel alloc]init];
  75. _reportRemarkLimitLb.font = LCFont(13);
  76. _reportRemarkLimitLb.textColor = HexColorFromRGB(0x9c9c9c);
  77. _reportRemarkLimitLb.textAlignment = NSTextAlignmentRight;
  78. }
  79. return _reportRemarkLimitLb;
  80. }
  81. @end