123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305 |
- //
- // 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];
-
- self.groupDesc.text = [NSString returnNoNullStringWithString: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
|