123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362 |
- //
- // YMHomePageListCell.m
- // MSYOUPAI
- //
- // Created by YoMi on 2024/2/12.
- // Copyright © 2024 MS. All rights reserved.
- //
- #import "YMHomePageListCell.h"
- #import "YMHomePageListCellViewModel.h"
- @interface YMHomePageListCell()
- /// ViewModel
- @property (nonatomic, strong) YMHomePageListCellViewModel *viewModel;
- /// 基础视图
- @property (nonatomic, strong) UIView *baseView;
- /// 用户头像视图
- @property (nonatomic, strong) UIImageView *userAvatarView;
- /// 用户在线状态视图
- @property (nonatomic, strong) UIImageView *userOnlineStatusImgv;
- /// 用户在线状态视图
- @property (nonatomic, strong) UIView *userOnlineStatusView;
- /// 用户在线状态点
- @property (nonatomic, strong) UIView *userOnlineStatusPoint;
- /// 用户在线状态标签
- @property (nonatomic, strong) UILabel *userOnlineStatusLb;
- /// 渐变视图
- @property (nonatomic, strong) UIView *gradientView;
- /// 用户昵称标签
- @property (nonatomic, strong) UILabel *userNicknameLb;
- /// 用户昵称标签
- @property (nonatomic, strong) UIImageView *vipImgv;
- /// 用户视频费用金额按钮
- @property (nonatomic, strong) UIButton *userVideoFeesAmountBtn;
- /// 心动或搭讪按钮
- @property (nonatomic, strong) UIButton *heartbeatOrAccostBtn;
- /// 心动或搭讪按钮
- @property (nonatomic, strong) UIImageView *heartbeatOrAccostImgv;
- @end
- @implementation YMHomePageListCell
- - (void)ym_setupViews{
-
- [self.contentView addSubview:self.baseView];
- [self.baseView addSubview:self.userAvatarView];
-
- [self.userAvatarView addSubview:self.userOnlineStatusImgv];
- [self.userAvatarView addSubview:self.userOnlineStatusView];
- [self.userOnlineStatusView addSubview:self.userOnlineStatusPoint];
- [self.userOnlineStatusView addSubview:self.userOnlineStatusLb];
-
- [self.userAvatarView addSubview:self.gradientView];
- [self.userAvatarView addSubview:self.userNicknameLb];
- [self.userAvatarView addSubview:self.vipImgv];
- [self.userAvatarView addSubview:self.userVideoFeesAmountBtn];
- [self.contentView addSubview:self.heartbeatOrAccostBtn];
- [self.heartbeatOrAccostBtn addSubview:self.heartbeatOrAccostImgv];
-
- [self setNeedsUpdateConstraints];
- [self updateConstraintsIfNeeded];
- }
- - (void)updateConstraints {
- [self.baseView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.contentView);
- make.left.equalTo(self.contentView);
- make.right.equalTo(self.contentView);
- make.bottom.equalTo(self.contentView);
- }];
-
- [self.userAvatarView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.baseView);
- make.left.equalTo(self.baseView);
- make.right.equalTo(self.baseView);
- make.bottom.equalTo(self.baseView);
- }];
-
- [self.userOnlineStatusImgv mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.userAvatarView).offset(adapt(5));
- make.left.equalTo(self.userAvatarView).offset(adapt(5));
- }];
-
- [self.userOnlineStatusView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.userAvatarView).offset(adapt(10));
- make.left.equalTo(self.userAvatarView).offset(adapt(10));
- make.height.mas_equalTo(adapt(22));
- }];
-
- [self.userOnlineStatusPoint mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.userOnlineStatusView.mas_centerY);
- make.left.equalTo(self.userOnlineStatusView).offset(adapt(10));
- make.width.height.mas_equalTo(adapt(6));
- }];
-
- [self.userOnlineStatusLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.centerY.equalTo(self.userOnlineStatusView.mas_centerY);
- make.left.equalTo(self.userOnlineStatusPoint.mas_right).offset(adapt(5));
- make.right.equalTo(self.userOnlineStatusView).offset(adapt(-10));
- }];
-
- [self.gradientView mas_makeConstraints:^(MASConstraintMaker *make) {
- make.top.equalTo(self.baseView);
- make.left.equalTo(self.userAvatarView);
- make.right.equalTo(self.userAvatarView);
- make.bottom.equalTo(self.userAvatarView);
- make.height.mas_equalTo(adapt(87));
- }];
-
- [self.userNicknameLb mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.userAvatarView).offset(adapt(10));
- make.bottom.equalTo(self.userVideoFeesAmountBtn.mas_top).offset(adapt(-10));
- }];
-
- [self.vipImgv mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.userNicknameLb.mas_right).offset(adapt(2));
- make.centerY.equalTo(self.userNicknameLb.mas_centerY).offset(adapt(0));
- make.width.height.mas_equalTo(adapt(11));
- }];
- [self.userVideoFeesAmountBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.userAvatarView).offset(adapt(10));
- make.bottom.equalTo(self.userAvatarView.mas_bottom).offset(adapt(-9));
- make.width.mas_equalTo(adapt(100));
- make.height.mas_equalTo(adapt(22));
- }];
-
- [self.heartbeatOrAccostBtn mas_makeConstraints:^(MASConstraintMaker *make) {
- make.right.equalTo(self.contentView.mas_right).offset(adapt(5));
- make.bottom.equalTo(self.contentView.mas_bottom).offset(adapt(5));
- make.width.height.mas_equalTo(adapt(44));
- }];
- [self.heartbeatOrAccostImgv mas_makeConstraints:^(MASConstraintMaker *make) {
- make.edges.equalTo(self.heartbeatOrAccostBtn).insets(UIEdgeInsetsMake(-7, -7, -7, -7));
- }];
- [super updateConstraints];
- }
- - (void)ym_bindViewModel:(YMHomePageListCellViewModel*)viewModel{
- if (!viewModel) {
- return;
- }
- _viewModel = viewModel;
-
- [self.userAvatarView sd_setImageWithURL:[LCTools getImageUrlWithAddress:self.viewModel.userAvatar]];
-
- @weakify(self)
- // [[[[RACObserve(self.viewModel, userOnlineStatusColor) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(UIColor * userOnlineStatusColor) {
- // @strongify(self)
- // self.userOnlineStatusPoint.backgroundColor = userOnlineStatusColor;
- // }];
-
- [[[[RACObserve(self.viewModel, userOnlineStatusText) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * userOnlineStatusText) {
- @strongify(self)
- self.userOnlineStatusLb.text = userOnlineStatusText;
- if ([userOnlineStatusText containsString:@"空闲"]) {
- //self.userOnlineStatusImgv.image = ImageByName(@"ym_common_home_status_kongxian");
-
- //self.userOnlineStatusView.backgroundColor = HexColorFromRGBA(0xFFE6F1, 0.8);
- self.userOnlineStatusPoint.backgroundColor = HexColorFromRGB(0xEE538F);
- self.userOnlineStatusLb.textColor = HexColorFromRGB(0xEE538F);
- [self.userOnlineStatusView ym_setGradientBackgroundWithColors:@[HexColorFromRGB(0xFFE6F1), HexColorFromRGB(0xFFE6F1)] locations:@[@0,@1] startPoint:CGPointMake(0, 0) endPoint:CGPointMake(1, 0)];
- } else if ([userOnlineStatusText containsString:@"在聊"]) {
- //self.userOnlineStatusImgv.image = ImageByName(@"ym_common_home_status_zailiao");
-
- self.userOnlineStatusPoint.backgroundColor = HexColorFromRGB(0xFFFFFF);
- self.userOnlineStatusLb.textColor = HexColorFromRGB(0xFFFFFF);
- [self.userOnlineStatusView ym_setGradientBackgroundWithColors:@[HexColorFromRGB(0x85DAFD), HexColorFromRGB(0x3C7FFE)] locations:@[@0,@1] startPoint:CGPointMake(0, 0) endPoint:CGPointMake(1, 0)];
- }
- }];
-
- self.userNicknameLb.text = self.viewModel.userNickname;
-
- [self.userVideoFeesAmountBtn setTitle:self.viewModel.userVideoFeesAmount forState:UIControlStateNormal];
- self.userVideoFeesAmountBtn.hidden = self.viewModel.isHideUserFeesAmount;
-
- if (self.viewModel.isHideUserFeesAmount) {
- [self.userNicknameLb mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.userAvatarView).offset(adapt(10));
- //make.right.equalTo(self.heartbeatOrAccostBtn.mas_left).offset(adapt(-10));
- make.bottom.equalTo(self.userAvatarView.mas_bottom).offset(adapt(-9));
- }];
- [self.userVideoFeesAmountBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
-
- }];
- } else {
- [self.userNicknameLb mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.userAvatarView).offset(adapt(10));
- //make.right.equalTo(self.heartbeatOrAccostBtn.mas_left).offset(adapt(-10));
- make.bottom.equalTo(self.userVideoFeesAmountBtn.mas_top).offset(adapt(-10));
- }];
- [self.userVideoFeesAmountBtn mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.left.equalTo(self.userAvatarView).offset(adapt(10));
- make.right.lessThanOrEqualTo(self.heartbeatOrAccostBtn.mas_left).offset(adapt(-3));
- make.bottom.equalTo(self.userAvatarView.mas_bottom).offset(adapt(-9));
- make.width.mas_equalTo(adapt(100));
- make.height.mas_equalTo(adapt(22));
- }];
- }
-
- //[self.heartbeatOrAccostBtn setTitle:self.viewModel.heartbeatOrAccostButtonTitle forState:UIControlStateNormal];
- //[self.heartbeatOrAccostBtn setImage:ImageByName(self.viewModel.heartbeatOrAccostButtonImage) forState:UIControlStateNormal];
- self.heartbeatOrAccostImgv.image = ImageByName(self.viewModel.heartbeatOrAccostButtonImage);
- //[self.heartbeatOrAccostBtn setTitleColor:self.viewModel.heartbeatOrAccostButtonTitleColor forState:UIControlStateNormal];
- //self.heartbeatOrAccostBtn.backgroundColor = self.viewModel.heartbeatOrAccostButtonBackgroundColor;
-
- }
- - (UIView *)baseView{
- if (!_baseView) {
- _baseView = [[UIView alloc]init];
- _baseView.layer.cornerRadius = adapt(10);
- _baseView.layer.masksToBounds = YES;
- }
- return _baseView;
- }
- - (UIImageView *)userAvatarView{
- if (!_userAvatarView) {
- _userAvatarView = [[UIImageView alloc]init];
- _userAvatarView.contentMode = UIViewContentModeScaleAspectFill;
- _userAvatarView.clipsToBounds = YES;
- _userAvatarView.userInteractionEnabled = YES;
- }
- return _userAvatarView;
- }
- - (UIImageView *)userOnlineStatusImgv {
- if (!_userOnlineStatusImgv) {
- _userOnlineStatusImgv = [[UIImageView alloc] init];
- _userOnlineStatusImgv.hidden = YES;
- //_userOnlineStatusImgv.backgroundColor = HexColorFromRGBA(0x000000, 0.4);
- //_userOnlineStatusImgv.layer.cornerRadius = adapt(18)/2;
- //_userOnlineStatusImgv.layer.masksToBounds = YES;
- }
- return _userOnlineStatusImgv;
- }
- - (UIView *)userOnlineStatusView{
- if (!_userOnlineStatusView) {
- _userOnlineStatusView = [[UIView alloc]init];
- _userOnlineStatusView.hidden = NO;
- _userOnlineStatusView.backgroundColor = HexColorFromRGBA(0xFFE6F1, 0.8);
- _userOnlineStatusView.layer.cornerRadius = adapt(22)/2;
- _userOnlineStatusView.layer.masksToBounds = YES;
- }
- return _userOnlineStatusView;
- }
- - (UIView *)userOnlineStatusPoint{
- if (!_userOnlineStatusPoint) {
- _userOnlineStatusPoint = [[UIView alloc]init];
- _userOnlineStatusPoint.backgroundColor = HexColorFromRGB(0xEE538F);
- _userOnlineStatusPoint.layer.cornerRadius = adapt(6)/2;
- _userOnlineStatusPoint.layer.masksToBounds = YES;
- }
- return _userOnlineStatusPoint;
- }
- - (UILabel *)userOnlineStatusLb{
- if (!_userOnlineStatusLb) {
- _userOnlineStatusLb = [[UILabel alloc]init];
- _userOnlineStatusLb.font = LCFont(12);
- _userOnlineStatusLb.textColor = HexColorFromRGB(0xEE538F);
- _userOnlineStatusLb.textAlignment = NSTextAlignmentCenter;
- _userOnlineStatusLb.text = @"空闲";
- }
- return _userOnlineStatusLb;
- }
- - (UIView *)gradientView{
- if (!_gradientView) {
- _gradientView = [[UIView alloc]init];
- [_gradientView ym_setGradientBackgroundWithColors:@[UIColor.clearColor,HexColorFromRGBA(0x0E0913,0.75)] locations:kMainGradLocation startPoint:CGPointMake(0.5, 0) endPoint:CGPointMake(0.5, 1)];
- }
- return _gradientView;
- }
- - (UILabel *)userNicknameLb{
- if (!_userNicknameLb) {
- _userNicknameLb = [[UILabel alloc]init];
- _userNicknameLb.font = LCBoldFont(16);
- _userNicknameLb.textColor = HexColorFromRGB(0xFFFFFF);
- _userNicknameLb.textAlignment = NSTextAlignmentLeft;
- _userNicknameLb.text = @"******";
- }
- return _userNicknameLb;
- }
- - (UIImageView *)vipImgv {
- if (!_vipImgv) {
- _vipImgv = [[UIImageView alloc] initWithImage:ImageByName(@"ym_home_page_cell_vip")];
- }
- return _vipImgv;
- }
- //- (UILabel *)userNicknameLb{
- // if (!_userNicknameLb) {
- // _userNicknameLb = [[UILabel alloc]init];
- // _userNicknameLb.font = LCBoldFont(16);
- // _userNicknameLb.textColor = HexColorFromRGB(0xFFFFFF);
- // _userNicknameLb.textAlignment = NSTextAlignmentLeft;
- // _userNicknameLb.text = @"******";
- // }
- // return _userNicknameLb;
- //}
- - (UIButton *)userVideoFeesAmountBtn{
- if (!_userVideoFeesAmountBtn) {
- _userVideoFeesAmountBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- _userVideoFeesAmountBtn.titleLabel.font = LCFont(10);
- [_userVideoFeesAmountBtn setTitleColor:HexColorFromRGB(0x686A7E) forState:UIControlStateNormal];
- [_userVideoFeesAmountBtn setTitle:@"****钻石/分钟" forState:UIControlStateNormal];
- [_userVideoFeesAmountBtn setImage:ImageByName(@"ym_home_page_diamond_icon") forState:UIControlStateNormal];
- _userVideoFeesAmountBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
- [_userVideoFeesAmountBtn setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
- CGFloat margin = adapt(5);
- _userVideoFeesAmountBtn.imageEdgeInsets = UIEdgeInsetsMake(0, -margin, 0, margin);
- _userVideoFeesAmountBtn.backgroundColor = [UIColor.whiteColor colorWithAlphaComponent:0.8];
- _userVideoFeesAmountBtn.layer.cornerRadius = adapt(22) / 2.0;
- _userVideoFeesAmountBtn.layer.masksToBounds = YES;
-
- }
- return _userVideoFeesAmountBtn;
- }
- - (UIButton *)heartbeatOrAccostBtn{
- if (!_heartbeatOrAccostBtn) {
- _heartbeatOrAccostBtn = [UIButton buttonWithType:UIButtonTypeCustom];
- //_heartbeatOrAccostBtn.backgroundColor = HexColorFromRGB(0xFF70C5);
- _heartbeatOrAccostBtn.titleLabel.font = LCFont(13);
- _heartbeatOrAccostBtn.imageView.contentMode = UIViewContentModeScaleToFill;
- [_heartbeatOrAccostBtn setTitleColor:HexColorFromRGB(0xFFFFFF) forState:UIControlStateNormal];
- //[_heartbeatOrAccostBtn setTitle:@"心动或搭讪" forState:UIControlStateNormal];
- //[_heartbeatOrAccostBtn setImage:ImageByName(@"ym_common_heartbeat_or_accost_icon") forState:UIControlStateNormal];
- _heartbeatOrAccostBtn.layer.cornerRadius = adapt(44)/2;
- _heartbeatOrAccostBtn.layer.borderWidth = adapt(0);
- _heartbeatOrAccostBtn.layer.borderColor = HexColorFromRGB(0xFF70C5).CGColor;
- _heartbeatOrAccostBtn.layer.masksToBounds = YES;
- WS(weakSelf)
- [[[_heartbeatOrAccostBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) {
- [weakSelf.viewModel sendAccostRequest];
- }];
- }
- return _heartbeatOrAccostBtn;
- }
- - (UIImageView *)heartbeatOrAccostImgv {
- if (!_heartbeatOrAccostImgv) {
- _heartbeatOrAccostImgv = [[UIImageView alloc] initWithImage:ImageByName(@"ym_common_home_pink_heart")];
- }
- return _heartbeatOrAccostImgv;
- }
- @end
|