123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- //
- // 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
|