NIMContactDataCell.m 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. //
  2. // NTESContactInfoCell.m
  3. // NIM
  4. //
  5. // Created by chris on 15/2/26.
  6. // Copyright (c) 2015年 Netease. All rights reserved.
  7. //
  8. #import "NIMContactDataCell.h"
  9. #import "NIMAvatarImageView.h"
  10. #import "UIView+NIM.h"
  11. #import "NIMKit.h"
  12. #import "UIImage+NIMKit.h"
  13. @interface NIMContactDataCell()
  14. @end
  15. @implementation NIMContactDataCell
  16. - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
  17. self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
  18. if (self) {
  19. _avatarImageView = [[NIMAvatarImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
  20. [_avatarImageView addTarget:self action:@selector(onPressAvatar:) forControlEvents:UIControlEventTouchUpInside];
  21. [self addSubview:_avatarImageView];
  22. _accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  23. [_accessoryBtn setImage:[UIImage nim_imageInKit:@"icon_accessory_normal"] forState:UIControlStateNormal];
  24. [_accessoryBtn setImage:[UIImage nim_imageInKit:@"icon_accessory_pressed"] forState:UIControlStateHighlighted];
  25. [_accessoryBtn setImage:[UIImage nim_imageInKit:@"icon_accessory_selected"] forState:UIControlStateSelected];
  26. [_accessoryBtn sizeToFit];
  27. _accessoryBtn.hidden = YES;
  28. _accessoryBtn.userInteractionEnabled = NO;
  29. [self addSubview:_accessoryBtn];
  30. }
  31. return self;
  32. }
  33. - (void)refreshItem:(id<NIMGroupMemberProtocol>)member withMemberInfo:(NIMKitInfo *)info {
  34. [self refreshTitle:member.showName];
  35. self.memberId = [member memberId];
  36. [self refreshAvatar:info];
  37. }
  38. - (void)refreshUser:(id<NIMGroupMemberProtocol>)member{
  39. [self refreshTitle:member.showName];
  40. self.memberId = [member memberId];
  41. NIMKitInfo *info = [[NIMKit sharedKit] infoByUser:self.memberId option:nil];
  42. [self refreshAvatar:info];
  43. }
  44. - (void)refreshTeam:(id<NIMGroupMemberProtocol>)member{
  45. [self refreshTitle:member.showName];
  46. self.memberId = [member memberId];
  47. NIMKitInfo *info = [[NIMKit sharedKit] infoByTeam:self.memberId option:nil];
  48. [self refreshAvatar:info];
  49. }
  50. - (void)refreshTitle:(NSString *)title{
  51. self.textLabel.text = title;
  52. }
  53. - (void)refreshAvatar:(NIMKitInfo *)info{
  54. NSURL *url = info.avatarUrlString ? [NSURL URLWithString:info.avatarUrlString] : nil;
  55. [_avatarImageView nim_setImageWithURL:url placeholderImage:info.avatarImage options:SDWebImageRetryFailed];
  56. }
  57. - (void)onPressAvatar:(id)sender{
  58. if ([self.delegate respondsToSelector:@selector(onPressAvatar:)]) {
  59. [self.delegate onPressAvatar:self.memberId];
  60. }
  61. }
  62. - (void)addDelegate:(id)delegate{
  63. self.delegate = delegate;
  64. }
  65. - (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{
  66. [self.accessoryBtn setHighlighted:highlighted];
  67. }
  68. - (void)setSelected:(BOOL)selected animated:(BOOL)animated{
  69. }
  70. - (void)layoutSubviews{
  71. [super layoutSubviews];
  72. CGFloat scale = self.nim_width / 320;
  73. CGFloat maxTextLabelWidth = 210 * scale;
  74. self.textLabel.nim_width = MIN(self.textLabel.nim_width, maxTextLabelWidth);
  75. self.accessoryBtn.nim_left = NIMContactAccessoryLeft;
  76. self.accessoryBtn.nim_centerY = self.nim_height * .5f;
  77. self.avatarImageView.nim_left = self.accessoryBtn.hidden ? NIMContactAvatarLeft : NIMContactAvatarAndAccessorySpacing + self.accessoryBtn.nim_right;
  78. self.avatarImageView.nim_centerY = self.nim_height * .5f;
  79. self.textLabel.nim_left = self.avatarImageView.nim_right + NIMContactAvatarAndTitleSpacing;
  80. }
  81. @end