// // YMImproveInfoAvatarView.m // MSYOUPAI // // Created by YoMi on 2024/2/8. // Copyright © 2024 MS. All rights reserved. // #import "YMImproveInfoAvatarView.h" #import "YMImproveInfoViewModel.h" @interface YMImproveInfoAvatarView () /// 完善信息VM @property (nonatomic, strong) YMImproveInfoViewModel *viewModel; /// 上传头像视图 @property (nonatomic, strong) UIImageView *uploadAvatarView; /// 相机图标 @property (nonatomic, strong) UIImageView *cameraIcon; @end @implementation YMImproveInfoAvatarView - (void)ym_setupViews{ [self addSubview:self.uploadAvatarView]; [self addSubview:self.cameraIcon]; [self setNeedsUpdateConstraints]; [self updateConstraintsIfNeeded]; } - (void)updateConstraints{ [self.uploadAvatarView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self.mas_centerX); make.top.equalTo(self).offset(adapt(0)); make.bottom.equalTo(self).offset(adapt(0)); make.width.height.mas_equalTo(adapt(96)); }]; [self.cameraIcon mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self.uploadAvatarView.mas_bottom); make.right.equalTo(self.uploadAvatarView); make.width.height.mas_equalTo(adapt(28)); }]; [super updateConstraints]; } - (void)ym_bindViewModel:(YMImproveInfoViewModel *)viewModel{ if (!viewModel) { return; } _viewModel = viewModel; @weakify(self) [[[[[RACSignal combineLatest:@[ RACObserve(self.viewModel, improveInfoAvatarUrl), RACObserve(self.viewModel, improveInfoMaleAvatarUrl), RACObserve(self.viewModel, improveInfoFemaleAvatarUrl), RACObserve(self.viewModel, genderType) ] reduce:^(NSString * improveInfoAvatarUrl, NSString * improveInfoMaleAvatarUrl, NSString * improveInfoFemaleAvatarUrl, NSNumber *genderType){ if (!OCStringIsEmpty(improveInfoAvatarUrl)) { return improveInfoAvatarUrl; } else { switch ([genderType intValue]) { case 2: return improveInfoMaleAvatarUrl; break; case 1: return improveInfoFemaleAvatarUrl; break; default: return improveInfoAvatarUrl; break; } } }] distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id _Nullable avatarUrl) { @strongify(self) [self.uploadAvatarView sd_setImageWithURL:[LCTools getImageUrlWithAddress:avatarUrl] placeholderImage:[UIImage imageNamed:@"ym_improve_info_camera_avatar"]]; }]; } - (UIImageView *)uploadAvatarView{ if (!_uploadAvatarView) { _uploadAvatarView = [[UIImageView alloc]init]; _uploadAvatarView.backgroundColor = HexColorFromRGB(0xF2F5FF); _uploadAvatarView.image = ImageByName(@"ym_improve_info_camera_avatar"); _uploadAvatarView.contentMode = UIViewContentModeScaleAspectFit; _uploadAvatarView.layer.cornerRadius = adapt(96)/2; _uploadAvatarView.clipsToBounds = YES; _uploadAvatarView.userInteractionEnabled = YES; WS(weakSelf) UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] init]; [_uploadAvatarView addGestureRecognizer:tap]; [[[tap rac_gestureSignal] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) { [weakSelf.viewModel openAvatarPickerPopupView]; }]; } return _uploadAvatarView; } - (UIImageView *)cameraIcon{ if (!_cameraIcon) { _cameraIcon = [[UIImageView alloc]init]; _cameraIcon.image = ImageByName(@"ym_improve_info_camera_icon"); } return _cameraIcon; } @end