// // GroupSettingBodyView.m // KulexiuForTeacher // // Created by Kyle on 2022/3/24. // #import "GroupSettingBodyView.h" #import "GroupMemberModel.h" #import "GroupListModel.h" #import "GroupOwnerTagView.h" typedef void(^ChooseMemberCallback)(NSString *targetId); @interface MemberView : UIView @property (nonatomic, strong) UIImageView *memberLogo; @property (nonatomic, strong) UILabel *memberLabel; @property (nonatomic, strong) NSString *targetId; @property (nonatomic, copy) ChooseMemberCallback callback; @property (nonatomic, strong) GroupOwnerTagView *tagView; - (void)configMemberWithUrl:(NSString *)url name:(NSString *)name targetId:(NSString *)targetId isOwner:(BOOL)isOwner callback:(ChooseMemberCallback)callback; @end @implementation MemberView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self initView]; } return self; } - (void)initView { self.memberLabel = [[UILabel alloc] init]; self.memberLabel.textColor = HexRGB(0x777777); [self.memberLabel setFont:[UIFont systemFontOfSize:13.0f]]; [self.memberLabel setTextAlignment:NSTextAlignmentCenter]; [self addSubview:self.memberLabel]; [self.memberLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(45); make.centerX.mas_equalTo(self.mas_centerX); make.height.mas_equalTo(20); make.bottom.mas_equalTo(self.mas_bottom).offset(-19); }]; self.memberLogo = [[UIImageView alloc] init]; self.memberLogo.layer.cornerRadius = 22.5; self.memberLogo.layer.masksToBounds = YES; self.memberLogo.contentMode = UIViewContentModeScaleAspectFill; [self addSubview:self.memberLogo]; [self.memberLogo mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.mas_equalTo(self.mas_centerX); make.width.height.mas_equalTo(45); make.bottom.mas_equalTo(self.memberLabel.mas_top).offset(-2); }]; UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)]; [self addGestureRecognizer:tapGesture]; self.tagView = [GroupOwnerTagView shareInstance]; [self addSubview:self.tagView]; [self.tagView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(40); make.height.mas_equalTo(15); make.centerX.mas_equalTo(self.memberLogo.mas_centerX); make.bottom.mas_equalTo(self.memberLogo.mas_bottom).offset(2); }]; self.tagView.hidden = YES; } - (void)tapAction:(UITapGestureRecognizer *)gesture { if (self.callback) { self.callback(self.targetId); } } - (void)configMemberWithUrl:(NSString *)url name:(NSString *)name targetId:(NSString *)targetId isOwner:(BOOL)isOwner callback:(ChooseMemberCallback)callback { if (callback) { self.callback = callback; } [self.memberLogo sd_setImageWithURL:[NSURL URLWithString:[url getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:CHAT_USER_DEFAULT_LOGO]]; self.memberLabel.text = [NSString returnNoNullStringWithString:name]; self.targetId = targetId; if (isOwner) { self.tagView.hidden = NO; } else { self.tagView.hidden = YES; } } @end @interface GroupSettingBodyView () @property (weak, nonatomic) IBOutlet UIImageView *groupImage; @property (weak, nonatomic) IBOutlet UILabel *groupName; @property (weak, nonatomic) IBOutlet UILabel *memberCount; @property (weak, nonatomic) IBOutlet UILabel *applyCount; @property (weak, nonatomic) IBOutlet UILabel *groupRemark; @property (weak, nonatomic) IBOutlet UIButton *switchButton; @property (weak, nonatomic) IBOutlet UIView *memberView; @property (weak, nonatomic) IBOutlet UILabel *groupMemberDesc; @property (weak, nonatomic) IBOutlet UIButton *sureButton; @property (nonatomic, copy) GroupSettingBlock callback; @property (nonatomic, strong) UIScrollView *memberScrollView; @property (weak, nonatomic) IBOutlet UILabel *groupDesc; @end @implementation GroupSettingBodyView - (void)awakeFromNib { [super awakeFromNib]; self.isOn = NO; [self.memberView addSubview:self.memberScrollView]; [self.memberScrollView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.bottom.mas_equalTo(self.memberView); }]; if ([UserDefaultObjectForKey(TENANT_ID) integerValue] > 0) { // 机构 CAGradientLayer *colorLayer = [UIView createGradientLayerFromColor:HexRGB(0xFF204B) startPoint:CGPointMake(1, 0.5) endColor:HexRGB(0xFE5B71) endPoint:CGPointMake(0, 0.5) bounds:CGRectMake(0, 0, KPortraitWidth - 25 *2, 44)]; [self.sureButton.layer addSublayer:colorLayer]; } } + (instancetype)shareInstance { GroupSettingBodyView *view = [[[NSBundle mainBundle] loadNibNamed:@"GroupSettingBodyView" owner:nil options:nil] firstObject]; return view; } - (void)configWithSource:(id)source callback:(GroupSettingBlock)callback { if (callback) { self.callback = callback; } if ([source isKindOfClass:[GroupListModel class]]) { GroupListModel *model = source; NSString *groupPlaceHolder = self.isCourseGroup ? GROUP_COURSE_LOGO : GROUP_FAN_LOGO; if ([NSString isEmptyString:model.img]) { [self.groupImage setImage:[UIImage imageNamed:groupPlaceHolder]]; } else { [self.groupImage sd_setImageWithURL:[NSURL URLWithString:[model.img getUrlEndcodeString]] placeholderImage:[UIImage imageNamed:groupPlaceHolder]]; } self.groupName.text = [NSString returnNoNullStringWithString:model.name]; self.groupRemark.text = [NSString returnNoNullStringWithString:model.name]; NSInteger groupLimit = model.groupMemberLimit; if (model.groupMemberLimit <= 0) { groupLimit = 2000; } self.groupMemberDesc.text = [NSString stringWithFormat:@"%.0f/%zd",model.memberNum,groupLimit]; if ([NSString isEmptyString:model.introduce]) { self.groupDesc.text = @"暂无群简介"; } else { self.groupDesc.text = model.introduce; } } } - (void)setApplyMember:(NSInteger)applyMember { _applyMember = applyMember; self.applyCount.text = [NSString stringWithFormat:@"%ld人",applyMember]; } - (void)evaluateStudentArray:(NSArray *)studentArray { if (studentArray.count == 0) { self.memberCount.text = @"查看全部群成员"; } else { self.memberCount.text = [NSString stringWithFormat:@"查看%zd名群成员", studentArray.count]; } [self removeAllSubviews:self.memberScrollView]; NSInteger maxCount = IS_IPAD ? 9 : 5; CGFloat width = KPortraitWidth / maxCount; NSInteger count = studentArray.count; // 最多显示max count if (count > maxCount) { count = maxCount; } for (NSInteger i = 0; i < count; i++) { CGRect frame = CGRectMake(width * i, 0, width, 100); GroupMemberModel *model = [studentArray objectAtIndex:i]; MemberView *view = [[MemberView alloc] initWithFrame:frame]; [view configMemberWithUrl:model.avatar name:model.nickname targetId:model.imUserId isOwner:model.isAdmin callback:^(NSString *targetId) { }]; [self.memberScrollView addSubview:view]; [view mas_makeConstraints:^(MASConstraintMaker *make) { make.top.bottom.mas_equalTo(self.memberScrollView); make.left.mas_equalTo(self.memberScrollView.mas_left).offset(width * i); make.width.mas_equalTo(width); make.height.mas_equalTo(100); if (i == count -1) { make.right.mas_equalTo(self.memberScrollView.mas_right); } }]; } } - (void)removeAllSubviews:(UIView *)view { while (view.subviews.count) { [view.subviews.lastObject removeFromSuperview]; } } // 群联系人 - (IBAction)contractPerson:(id)sender { if (self.callback) { self.callback(GROUPSETTING_PERSON); } } // 群申请列表 - (IBAction)groupApply:(id)sender { if (self.callback) { self.callback(GROUPSETTING_APPLY); } } // 修改群名称 - (IBAction)modifyGroupName:(id)sender { if (self.callback) { self.callback(GROUPSETTING_GROUP); } } // 查找聊天内容 - (IBAction)messageSearch:(id)sender { if (self.callback) { self.callback(GROUPSETTING_MESSAGESEARCH); } } // 群通知设置 - (IBAction)notiferAction:(id)sender { self.isOn = !self.isOn; if (self.callback) { self.callback(GROUPSETTING_SETTING); } } // 群公告 - (IBAction)groupNotice:(id)sender { if (self.callback) { self.callback(GROUPSETTING_NOTICE); } } // 投诉 - (IBAction)feedBack:(id)sender { if (self.callback) { self.callback(GROUPSETTING_FEEDBACK); } } // 解散群聊 - (IBAction)dismissGroup:(id)sender { if (self.callback) { self.callback(GROUPSETTING_DISMISS); } } // 群简介 - (IBAction)groupIntroduce:(id)sender { if (self.callback) { self.callback(GROUPSETTING_GOURPINTRO); } } - (void)setIsOn:(BOOL)isOn { _isOn = isOn; NSString *imageName = isOn ? CLIENT_SWITCH_ON : @"switch_off"; [self.switchButton setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; } - (UIScrollView *)memberScrollView { if (!_memberScrollView) { _memberScrollView = [[UIScrollView alloc] init]; } return _memberScrollView; } /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // Drawing code } */ @end