123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192 |
- //
- // NIMAdvancedTeamMemberCell.m
- // NIM
- //
- // Created by chris on 15/3/26.
- // Copyright (c) 2015年 Netease. All rights reserved.
- //
- #import "NIMAdvancedTeamMemberCell.h"
- #import "UIView+NIM.h"
- #import "NIMUsrInfoData.h"
- #import "NIMAvatarImageView.h"
- #import "NIMKitUtil.h"
- #import "NIMKit.h"
- #import "UIImage+NIMKit.h"
- @interface NIMAdvancedTeamMemberView : UIView{
- }
- @property(nonatomic,strong) NIMAvatarImageView *imageView;
- @property(nonatomic,strong) UILabel *titleLabel;
- @property(nonatomic,strong) NIMKitInfo *member;
- @end
- #define RegularTeamMemberViewHeight 53
- #define RegularTeamMemberViewWidth 38
- @implementation NIMAdvancedTeamMemberView
- - (instancetype)initWithFrame:(CGRect)frame{
- self = [super initWithFrame:frame];
- if (self) {
- _titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
- _titleLabel.backgroundColor = [UIColor clearColor];
- _titleLabel.font = [UIFont systemFontOfSize:12.f];
- [self addSubview:_titleLabel];
- _imageView = [[NIMAvatarImageView alloc] initWithFrame:CGRectMake(0, 0, 37, 37)];
- [self addSubview:_imageView];
- }
- return self;
- }
- - (void)setMember:(NIMKitInfo *)member{
- _member = member;
- NSURL *avatarURL;
- if (member.avatarUrlString.length) {
- avatarURL = [NSURL URLWithString:member.avatarUrlString];
- }
- [_imageView nim_setImageWithURL:avatarURL placeholderImage:member.avatarImage];
- }
- - (CGSize)sizeThatFits:(CGSize)size{
- return CGSizeMake(RegularTeamMemberViewWidth, RegularTeamMemberViewHeight);
- }
- #define RegularTeamMemberInvite
- - (void)layoutSubviews{
- [super layoutSubviews];
- [self.titleLabel sizeToFit];
- self.titleLabel.nim_width = _titleLabel.nim_width > self.nim_width ? self.nim_width : _titleLabel.nim_width;
- self.imageView.nim_centerX = self.nim_width * .5f;
- self.titleLabel.nim_centerX = self.nim_width * .5f;
- self.titleLabel.nim_bottom = self.nim_height;
- }
- @end
- @interface NIMAdvancedTeamMemberCell()
- @property(nonatomic,strong) NSMutableArray *icons;
- @property(nonatomic,strong) NIMTeam *team;
- @property(nonatomic,copy) NSArray *teamMembers;
- @property(nonatomic,strong) UIButton *addBtn;
- @end
- @implementation NIMAdvancedTeamMemberCell
- - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
- self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
- if (self) {
- _icons = [[NSMutableArray alloc] init];
- _addBtn = [[UIButton alloc]initWithFrame:CGRectZero];
- [_addBtn addTarget:self action:@selector(onPress:) forControlEvents:UIControlEventTouchUpInside];
- _addBtn.userInteractionEnabled = NO;
- [self addSubview:_addBtn];
- }
- return self;
- }
- - (void)rereshWithTeam:(NIMTeam*)team
- members:(NSArray*)members
- width:(CGFloat)width{
- _team = team;
- _teamMembers = members;
- NIMTeamMember *myTeamInfo;
- for (NIMTeamMember *member in members) {
- if ([member.userId isEqualToString:[NIMSDK sharedSDK].loginManager.currentAccount]) {
- myTeamInfo = member;
- break;
- }
- }
- NSInteger count = 0;
- if ([NIMKitUtil canInviteMember:myTeamInfo]) {
- NIMAdvancedTeamMemberView *view = [self fetchMemeberView:0];
- UIImage *addImage = [UIImage nim_imageInKit:@"icon_add_normal"];
- [view.imageView nim_setImageWithURL:nil placeholderImage:addImage];
- view.titleLabel.text = @"邀请";
- count = 1;
- self.addBtn.userInteractionEnabled = YES;
- }else{
- self.addBtn.userInteractionEnabled = NO;
- }
-
- CGFloat padding = 44.f;
- CGFloat itemWidth = 49.f;
- NSInteger maxIconCount = (width - padding) / itemWidth;
- NSInteger iconCount = members.count > maxIconCount-count ? maxIconCount : members.count + count;
- NIMSession *session = [NIMSession session:team.teamId type:NIMSessionTypeTeam];
- for (UIView *view in _icons) {
- [view removeFromSuperview];
- }
- for (NSInteger i = 0; i < iconCount; i++) {
- NIMAdvancedTeamMemberView *view = [self fetchMemeberView:i];
- if (!count || i != 0) {
- NSInteger memberIndex = i - count;
- NIMTeamMember *member = members[memberIndex];
- NIMKitInfo *info = [[NIMKit sharedKit] infoByUser:member.userId option:nil];
- view.member = info;
- view.titleLabel.text = [NIMKitUtil showNick:member.userId inSession:session];
- }
- [self addSubview:view];
- [view setNeedsLayout];
- }
- [self bringSubviewToFront:self.addBtn];
- }
- - (void)onPress:(id)sender{
- if ([self.delegate respondsToSelector:@selector(didSelectAddOpeartor)]) {
- [self.delegate didSelectAddOpeartor];
- }
- }
- - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
- CGRect hitRect = self.addBtn.frame;
- return CGRectContainsPoint(hitRect, point) ? self.addBtn : [super hitTest:point withEvent:event];
- }
- - (void)layoutSubviews{
- [super layoutSubviews];
- _addBtn.frame = CGRectMake(0, 0, self.nim_width *.20f, self.nim_height);
- CGFloat left = 20.f;
- CGFloat top = 17.f;
- self.textLabel.nim_left = left;
- self.textLabel.nim_top = top;
- self.detailTextLabel.nim_top = top;
- self.accessoryView.nim_top = top;
-
- CGFloat spacing = 12.f;
- CGFloat bottom = 10.f;
- for (NIMAdvancedTeamMemberView *view in _icons) {
- view.nim_left = left;
- left += view.nim_width;
- left += spacing;
- view.nim_bottom = self.nim_height - bottom;
- }
- }
- #pragma mark - Private
- - (NIMAdvancedTeamMemberView *)fetchMemeberView:(NSInteger)index{
- if (_icons.count <= index) {
- for (int i = 0; i < index - _icons.count + 1 ; i++) {
- NIMAdvancedTeamMemberView *view = [[NIMAdvancedTeamMemberView alloc]initWithFrame:CGRectZero];
- view.userInteractionEnabled = NO;
- [view sizeToFit];
- [_icons addObject:view];
- }
- }
- return _icons[index];
- }
- @end
|