YMDynamicMessagesCell.m 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //
  2. // YMDynamicMessagesCell.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/3/21.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMDynamicMessagesCell.h"
  9. #import "YMDynamicMessagesCellViewModel.h"
  10. @interface YMDynamicMessagesCell ()
  11. /// ViewModel
  12. @property (nonatomic, strong) YMDynamicMessagesCellViewModel *viewModel;
  13. /// 基础视图
  14. @property (nonatomic, strong) UIView *baseView;
  15. /// 用户头像视图
  16. @property (nonatomic, strong) UIImageView *userAvatarView;
  17. /// 动态消息内容标签
  18. @property (nonatomic, strong) UILabel *dynamicMessagesContentLb;
  19. /// 动态消息日期标签
  20. @property (nonatomic, strong) UILabel *dynamicMessagesDateLb;
  21. @end
  22. @implementation YMDynamicMessagesCell
  23. - (void)awakeFromNib {
  24. [super awakeFromNib];
  25. // Initialization code
  26. }
  27. - (void)setSelected:(BOOL)selected animated:(BOOL)animated {
  28. [super setSelected:selected animated:animated];
  29. // Configure the view for the selected state
  30. }
  31. - (void)ym_setupViews{
  32. self.contentView.backgroundColor = UIColor.clearColor;
  33. self.backgroundColor = UIColor.clearColor;
  34. [self.contentView addSubview:self.baseView];
  35. [self.baseView addSubview:self.userAvatarView];
  36. [self.baseView addSubview:self.dynamicMessagesContentLb];
  37. [self.baseView addSubview:self.dynamicMessagesDateLb];
  38. [self setNeedsUpdateConstraints];
  39. [self updateConstraintsIfNeeded];
  40. }
  41. - (void)updateConstraints {
  42. [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
  43. make.top.equalTo(self.contentView);
  44. make.left.equalTo(self.contentView);
  45. make.right.equalTo(self.contentView);
  46. make.bottom.equalTo(self.contentView);
  47. }];
  48. [self.userAvatarView mas_makeConstraints:^(MASConstraintMaker *make) {
  49. make.top.equalTo(self.baseView).offset(adapt(15));
  50. make.left.equalTo(self.baseView).offset(adapt(15));
  51. make.width.height.mas_equalTo(adapt(50));
  52. }];
  53. [self.dynamicMessagesContentLb mas_makeConstraints:^(MASConstraintMaker *make) {
  54. make.top.equalTo(self.userAvatarView.mas_top);
  55. make.left.equalTo(self.userAvatarView.mas_right).offset(adapt(10));
  56. }];
  57. [self.dynamicMessagesDateLb mas_makeConstraints:^(MASConstraintMaker *make) {
  58. make.top.equalTo(self.userAvatarView.mas_bottom).offset(adapt(5));
  59. make.left.equalTo(self.userAvatarView.mas_right).offset(adapt(10));
  60. make.bottom.equalTo(self.baseView).offset(adapt(-15)).priorityHigh();
  61. }];
  62. [super updateConstraints];
  63. }
  64. - (void)ym_bindViewModel:(YMDynamicMessagesCellViewModel*)viewModel{
  65. if (!viewModel) {
  66. return;
  67. }
  68. _viewModel = viewModel;
  69. [self.userAvatarView sd_setImageWithURL:[LCTools getImageUrlWithAddress:self.viewModel.userAvatar]];
  70. self.dynamicMessagesContentLb.attributedText = self.viewModel.dynamicMessagesContent;
  71. self.dynamicMessagesDateLb.text = self.viewModel.dynamicMessagesDate;
  72. }
  73. - (UIView *)baseView{
  74. if (!_baseView) {
  75. _baseView = [[UIView alloc]init];
  76. _baseView.backgroundColor = HexColorFromRGB(0xFFFFFF);
  77. }
  78. return _baseView;
  79. }
  80. - (UIImageView *)userAvatarView{
  81. if (!_userAvatarView) {
  82. _userAvatarView = [[UIImageView alloc]init];
  83. _userAvatarView.backgroundColor = UIColor.lightGrayColor;
  84. _userAvatarView.contentMode = UIViewContentModeScaleAspectFill;
  85. _userAvatarView.layer.cornerRadius = adapt(5);
  86. _userAvatarView.clipsToBounds = YES;
  87. _userAvatarView.userInteractionEnabled = YES;
  88. WS(weakSelf)
  89. UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init];
  90. [_userAvatarView addGestureRecognizer:tap];
  91. [[[tap rac_gestureSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
  92. [weakSelf.viewModel.gotoPersonalPageSubject sendNext:@(weakSelf.viewModel.userId)];
  93. }];
  94. }
  95. return _userAvatarView;
  96. }
  97. - (UILabel *)dynamicMessagesContentLb{
  98. if (!_dynamicMessagesContentLb) {
  99. _dynamicMessagesContentLb = [[UILabel alloc]init];
  100. _dynamicMessagesContentLb.font = LCFont(13);
  101. _dynamicMessagesContentLb.textColor = HexColorFromRGB(0x333333);
  102. _dynamicMessagesContentLb.textAlignment = NSTextAlignmentLeft;
  103. _dynamicMessagesContentLb.text = @"******";
  104. _dynamicMessagesContentLb.numberOfLines = 3;
  105. }
  106. return _dynamicMessagesContentLb;
  107. }
  108. - (UILabel *)dynamicMessagesDateLb{
  109. if (!_dynamicMessagesDateLb) {
  110. _dynamicMessagesDateLb = [[UILabel alloc]init];
  111. _dynamicMessagesDateLb.font = LCFont(12);
  112. _dynamicMessagesDateLb.textColor = HexColorFromRGB(0x9c9c9c);
  113. _dynamicMessagesDateLb.textAlignment = NSTextAlignmentLeft;
  114. _dynamicMessagesDateLb.text = @"******";
  115. }
  116. return _dynamicMessagesDateLb;
  117. }
  118. @end