完善了在线列表用户的数据以及点击展示用户卡片
This commit is contained in:
@@ -291,6 +291,7 @@
|
|||||||
E896EFB62771D55500AD2CC1 /* FansInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFB52771D55500AD2CC1 /* FansInfoModel.m */; };
|
E896EFB62771D55500AD2CC1 /* FansInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E896EFB52771D55500AD2CC1 /* FansInfoModel.m */; };
|
||||||
E899C68927508F4E00E189E5 /* XPUserCardInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */; };
|
E899C68927508F4E00E189E5 /* XPUserCardInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */; };
|
||||||
E899C68C275093B800E189E5 /* XPUserCardMicroItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */; };
|
E899C68C275093B800E189E5 /* XPUserCardMicroItemModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */; };
|
||||||
|
E89BD7D4277D471100E31B19 /* XPRoomOnlineTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E89BD7D3277D471100E31B19 /* XPRoomOnlineTableViewCell.m */; };
|
||||||
E89D60BA271D643A001F8895 /* Api+Room.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60B9271D643A001F8895 /* Api+Room.m */; };
|
E89D60BA271D643A001F8895 /* Api+Room.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60B9271D643A001F8895 /* Api+Room.m */; };
|
||||||
E89D60BD271D647A001F8895 /* XPRoomPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60BC271D647A001F8895 /* XPRoomPresenter.m */; };
|
E89D60BD271D647A001F8895 /* XPRoomPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60BC271D647A001F8895 /* XPRoomPresenter.m */; };
|
||||||
E89D60C1271D64B9001F8895 /* RoomInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60C0271D64B9001F8895 /* RoomInfoModel.m */; };
|
E89D60C1271D64B9001F8895 /* RoomInfoModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E89D60C0271D64B9001F8895 /* RoomInfoModel.m */; };
|
||||||
@@ -981,6 +982,8 @@
|
|||||||
E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardInfoModel.m; sourceTree = "<group>"; };
|
E899C68827508F4E00E189E5 /* XPUserCardInfoModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardInfoModel.m; sourceTree = "<group>"; };
|
||||||
E899C68A275093B700E189E5 /* XPUserCardMicroItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardMicroItemModel.h; sourceTree = "<group>"; };
|
E899C68A275093B700E189E5 /* XPUserCardMicroItemModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPUserCardMicroItemModel.h; sourceTree = "<group>"; };
|
||||||
E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardMicroItemModel.m; sourceTree = "<group>"; };
|
E899C68B275093B800E189E5 /* XPUserCardMicroItemModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPUserCardMicroItemModel.m; sourceTree = "<group>"; };
|
||||||
|
E89BD7D2277D471100E31B19 /* XPRoomOnlineTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomOnlineTableViewCell.h; sourceTree = "<group>"; };
|
||||||
|
E89BD7D3277D471100E31B19 /* XPRoomOnlineTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomOnlineTableViewCell.m; sourceTree = "<group>"; };
|
||||||
E89D60B8271D643A001F8895 /* Api+Room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Room.h"; sourceTree = "<group>"; };
|
E89D60B8271D643A001F8895 /* Api+Room.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Api+Room.h"; sourceTree = "<group>"; };
|
||||||
E89D60B9271D643A001F8895 /* Api+Room.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Room.m"; sourceTree = "<group>"; };
|
E89D60B9271D643A001F8895 /* Api+Room.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "Api+Room.m"; sourceTree = "<group>"; };
|
||||||
E89D60BB271D647A001F8895 /* XPRoomPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPresenter.h; sourceTree = "<group>"; };
|
E89D60BB271D647A001F8895 /* XPRoomPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomPresenter.h; sourceTree = "<group>"; };
|
||||||
@@ -2379,6 +2382,8 @@
|
|||||||
E84BF7D9277C72AC00EF8877 /* XPRoomRoleTableViewCell.m */,
|
E84BF7D9277C72AC00EF8877 /* XPRoomRoleTableViewCell.m */,
|
||||||
E84BF7DB277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.h */,
|
E84BF7DB277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.h */,
|
||||||
E84BF7DC277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m */,
|
E84BF7DC277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m */,
|
||||||
|
E89BD7D2277D471100E31B19 /* XPRoomOnlineTableViewCell.h */,
|
||||||
|
E89BD7D3277D471100E31B19 /* XPRoomOnlineTableViewCell.m */,
|
||||||
);
|
);
|
||||||
path = Cell;
|
path = Cell;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -3927,6 +3932,7 @@
|
|||||||
E8AC721626F46B06007D6E91 /* XPMineSettingTableViewCell.m in Sources */,
|
E8AC721626F46B06007D6E91 /* XPMineSettingTableViewCell.m in Sources */,
|
||||||
18EE3FDF2750C1F700A452BF /* SessionListCell.m in Sources */,
|
18EE3FDF2750C1F700A452BF /* SessionListCell.m in Sources */,
|
||||||
E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */,
|
E80487652717DDD9008595F2 /* XPRoomMenuItem.m in Sources */,
|
||||||
|
E89BD7D4277D471100E31B19 /* XPRoomOnlineTableViewCell.m in Sources */,
|
||||||
E8412F9627795E34006E1101 /* XPRoomInviteFansView.m in Sources */,
|
E8412F9627795E34006E1101 /* XPRoomInviteFansView.m in Sources */,
|
||||||
189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */,
|
189DD75026E21D9000AB55B1 /* GCDHelper.m in Sources */,
|
||||||
E82D5C76276AEB5100858D6D /* NameplateModel.m in Sources */,
|
E82D5C76276AEB5100858D6D /* NameplateModel.m in Sources */,
|
||||||
|
@@ -101,8 +101,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
- (void)onlineTapRecognizer {
|
- (void)onlineTapRecognizer {
|
||||||
XPRoomOnLineViewController * onlineVC = [[XPRoomOnLineViewController alloc] init];
|
XPRoomOnLineViewController * onlineVC = [[XPRoomOnLineViewController alloc] initWithDelegate:self.hostDelegate];
|
||||||
onlineVC.roomId = [NSString stringWithFormat:@"%ld",self.hostDelegate.getRoomInfo.roomId];
|
|
||||||
[self.hostDelegate.getCurrentNav pushViewController:onlineVC animated:YES];
|
[self.hostDelegate.getCurrentNav pushViewController:onlineVC animated:YES];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,19 @@
|
|||||||
|
//
|
||||||
|
// XPRoomOnlineTableViewCell.h
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by 冯硕 on 2021/12/30.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
@class NIMChatroomMember;
|
||||||
|
@interface XPRoomOnlineTableViewCell : UITableViewCell
|
||||||
|
///云信用户实体
|
||||||
|
@property (strong, nonatomic) NIMChatroomMember *member;
|
||||||
|
///是否在麦序上
|
||||||
|
@property (nonatomic,assign) BOOL isOnMicro;
|
||||||
|
@end
|
||||||
|
|
||||||
|
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,350 @@
|
|||||||
|
//
|
||||||
|
// XPRoomOnlineTableViewCell.m
|
||||||
|
// xplan-ios
|
||||||
|
//
|
||||||
|
// Created by 冯硕 on 2021/12/30.
|
||||||
|
//
|
||||||
|
|
||||||
|
#import "XPRoomOnlineTableViewCell.h"
|
||||||
|
///Third
|
||||||
|
#import <Masonry/Masonry.h>
|
||||||
|
#import <NIMSDK/NIMSDK.h>
|
||||||
|
///Tool
|
||||||
|
#import "NetImageView.h"
|
||||||
|
#import "ThemeColor.h"
|
||||||
|
#import "UIImage+Utils.h"
|
||||||
|
#import "XPMessageRemoteExtModel.h"
|
||||||
|
|
||||||
|
@interface XPRoomOnlineTableViewCell ()
|
||||||
|
///显示头像
|
||||||
|
@property (nonatomic,strong) NetImageView *avatarImageView;
|
||||||
|
///性别
|
||||||
|
@property (nonatomic,strong) UIImageView *sexImageView;
|
||||||
|
///姓名 和 等级 总的容器
|
||||||
|
@property (nonatomic,strong) UIStackView *stackView;
|
||||||
|
///姓名的容器
|
||||||
|
@property (nonatomic,strong) UIStackView *nickStackView;
|
||||||
|
///显示姓名
|
||||||
|
@property (nonatomic,strong) UILabel *nickLabel;
|
||||||
|
///魅力等级 等级 铭牌
|
||||||
|
@property (nonatomic,strong) UIStackView *tagStackView;
|
||||||
|
///角色的
|
||||||
|
@property (nonatomic,strong) UIButton *roleButton;
|
||||||
|
///美丽等级
|
||||||
|
@property (nonatomic,strong) NetImageView *charmImageView;
|
||||||
|
///等级
|
||||||
|
@property (nonatomic,strong) NetImageView *experImageView;
|
||||||
|
///铭牌的容器
|
||||||
|
@property (nonatomic,strong) UIView * namePlateView;
|
||||||
|
///铭牌图片
|
||||||
|
@property (nonatomic,strong) NetImageView *nameplateImageView;
|
||||||
|
///铭牌文字
|
||||||
|
@property (nonatomic,strong) UILabel *nameplateLabel;
|
||||||
|
///分割线
|
||||||
|
@property (nonatomic,strong) UIView * lineView;
|
||||||
|
///在麦上显示标签
|
||||||
|
@property (strong, nonatomic) UILabel *onMicroStatusLabel;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation XPRoomOnlineTableViewCell
|
||||||
|
|
||||||
|
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
|
||||||
|
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
|
||||||
|
[self initSubViews];
|
||||||
|
[self initSubViewConstraints];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - Private Method
|
||||||
|
- (void)initSubViews {
|
||||||
|
self.backgroundColor = [UIColor clearColor];
|
||||||
|
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||||
|
[self.contentView addSubview:self.avatarImageView];
|
||||||
|
[self.contentView addSubview:self.stackView];
|
||||||
|
[self.contentView addSubview:self.lineView];
|
||||||
|
[self.contentView addSubview:self.onMicroStatusLabel];
|
||||||
|
|
||||||
|
[self.stackView addArrangedSubview:self.nickStackView];
|
||||||
|
[self.stackView addArrangedSubview:self.tagStackView];
|
||||||
|
|
||||||
|
[self.nickStackView addArrangedSubview:self.nickLabel];
|
||||||
|
[self.nickStackView addArrangedSubview:self.sexImageView];
|
||||||
|
|
||||||
|
[self.tagStackView addArrangedSubview:self.roleButton];
|
||||||
|
[self.tagStackView addArrangedSubview:self.experImageView];
|
||||||
|
[self.tagStackView addArrangedSubview:self.charmImageView];
|
||||||
|
[self.tagStackView addArrangedSubview:self.namePlateView];
|
||||||
|
|
||||||
|
///铭牌
|
||||||
|
[self.namePlateView addSubview:self.nameplateImageView];
|
||||||
|
[self.namePlateView addSubview:self.nameplateLabel];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)initSubViewConstraints {
|
||||||
|
[self.avatarImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.mas_equalTo(self.contentView).offset(15);
|
||||||
|
make.width.height.mas_equalTo(40);
|
||||||
|
make.centerY.mas_equalTo(self.contentView.mas_centerY);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.centerY.mas_equalTo(self);
|
||||||
|
make.left.mas_equalTo(self.avatarImageView.mas_right).offset(10);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.height.mas_equalTo(25);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.roleButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.size.mas_equalTo(CGSizeMake(38, 15));
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.width.height.mas_equalTo(25);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.width.height.mas_equalTo(25);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.namePlateView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.height.mas_equalTo(25);
|
||||||
|
make.width.mas_equalTo(self.nameplateImageView.mas_width);
|
||||||
|
}];
|
||||||
|
|
||||||
|
|
||||||
|
[self.nameplateImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.height.mas_equalTo(25);
|
||||||
|
make.width.mas_equalTo(60);
|
||||||
|
make.left.top.mas_equalTo(self.namePlateView);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.nameplateLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.top.bottom.mas_equalTo(self.nameplateImageView);
|
||||||
|
make.right.mas_equalTo(self.namePlateView).offset(-2);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.mas_equalTo(self.nickLabel);
|
||||||
|
make.right.mas_equalTo(self.contentView).offset(-15);
|
||||||
|
make.bottom.mas_equalTo(self.contentView);
|
||||||
|
make.height.mas_equalTo(0.5);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.onMicroStatusLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.centerY.mas_equalTo(self.contentView);
|
||||||
|
make.right.mas_equalTo(-15);
|
||||||
|
make.width.mas_equalTo(32);
|
||||||
|
make.height.mas_equalTo(14);
|
||||||
|
}];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#pragma mark - Getters And Setters
|
||||||
|
- (void)setMember:(NIMChatroomMember *)member {
|
||||||
|
_member = member;
|
||||||
|
if (_member) {
|
||||||
|
self.avatarImageView.imageUrl = _member.roomAvatar;
|
||||||
|
self.nickLabel.text = _member.roomNickname;
|
||||||
|
NIMUser *user = [[NIMSDK sharedSDK].userManager userInfo:_member.userId];
|
||||||
|
self.sexImageView.image = user.userInfo.gender == NIMUserGenderFemale ? [UIImage imageNamed:@"common_female"] : [UIImage imageNamed:@"common_male"];
|
||||||
|
NSDictionary * extDic = [member.roomExt toJSONObject];
|
||||||
|
if (extDic.allKeys.count > 0 || (member.type == NIMTeamMemberTypeOwner || member.type == NIMChatroomMemberTypeManager)) {
|
||||||
|
self.tagStackView.hidden = NO;
|
||||||
|
XPMessageRemoteExtModel * userInfo = [XPMessageRemoteExtModel modelWithDictionary:[extDic objectForKey:member.userId]];
|
||||||
|
|
||||||
|
if (userInfo.experUrl) {
|
||||||
|
self.experImageView.imageUrl = userInfo.experUrl;
|
||||||
|
}
|
||||||
|
self.experImageView.hidden = userInfo.experUrl.length <= 0;
|
||||||
|
|
||||||
|
if (userInfo.charmUrl) {
|
||||||
|
self.charmImageView.imageUrl = userInfo.charmUrl;
|
||||||
|
}
|
||||||
|
self.charmImageView.hidden = userInfo.charmUrl.length <= 0;
|
||||||
|
|
||||||
|
if (userInfo.inRoomNameplatePic.length>0 && userInfo.inRoomNameplateWord.length>0) {
|
||||||
|
self.nameplateImageView.imageUrl = userInfo.inRoomNameplatePic;
|
||||||
|
self.nameplateLabel.text = userInfo.inRoomNameplateWord;
|
||||||
|
self.namePlateView.hidden = NO;
|
||||||
|
} else {
|
||||||
|
self.namePlateView.hidden = YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_member.type == NIMTeamMemberTypeOwner) {
|
||||||
|
self.roleButton.hidden = NO;
|
||||||
|
[self.roleButton setBackgroundColor:[ThemeColor appEmphasizeColor2]];
|
||||||
|
[self.roleButton setTitle:@"房主" forState:UIControlStateNormal];
|
||||||
|
} else if(_member.type == NIMChatroomMemberTypeManager) {
|
||||||
|
self.roleButton.hidden = NO;
|
||||||
|
[self.roleButton setBackgroundColor:[ThemeColor appEmphasizeColor]];
|
||||||
|
[self.roleButton setTitle:@"管理员" forState:UIControlStateNormal];
|
||||||
|
} else {
|
||||||
|
self.roleButton.hidden = YES;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.tagStackView.hidden = YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)setIsOnMicro:(BOOL)isOnMicro {
|
||||||
|
self.onMicroStatusLabel.hidden = !isOnMicro;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NetImageView *)avatarImageView {
|
||||||
|
if (!_avatarImageView) {
|
||||||
|
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||||
|
config.imageType = ImageTypeUserIcon;
|
||||||
|
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||||
|
_avatarImageView = [[NetImageView alloc] initWithConfig:config];
|
||||||
|
_avatarImageView.layer.masksToBounds = YES;
|
||||||
|
_avatarImageView.layer.cornerRadius = 40/2;
|
||||||
|
_avatarImageView.layer.borderColor = [ThemeColor appMainColor].CGColor;
|
||||||
|
}
|
||||||
|
return _avatarImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIImageView *)sexImageView {
|
||||||
|
if (!_sexImageView) {
|
||||||
|
_sexImageView = [[UIImageView alloc] init];
|
||||||
|
_sexImageView.userInteractionEnabled = YES;
|
||||||
|
}
|
||||||
|
return _sexImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UILabel *)nickLabel {
|
||||||
|
if (!_nickLabel) {
|
||||||
|
_nickLabel = [[UILabel alloc] init];
|
||||||
|
_nickLabel.font = [UIFont systemFontOfSize:15];
|
||||||
|
_nickLabel.textColor = [UIColor whiteColor];
|
||||||
|
}
|
||||||
|
return _nickLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIStackView *)stackView {
|
||||||
|
if (!_stackView) {
|
||||||
|
_stackView = [[UIStackView alloc] init];
|
||||||
|
_stackView.axis = UILayoutConstraintAxisVertical;
|
||||||
|
_stackView.distribution = UIStackViewDistributionFillProportionally;
|
||||||
|
_stackView.alignment = UIStackViewAlignmentLeading;
|
||||||
|
_stackView.spacing = 5;
|
||||||
|
}
|
||||||
|
return _stackView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIStackView *)nickStackView {
|
||||||
|
if (!_nickStackView) {
|
||||||
|
_nickStackView = [[UIStackView alloc] init];
|
||||||
|
_nickStackView.axis = UILayoutConstraintAxisHorizontal;
|
||||||
|
_nickStackView.distribution = UIStackViewDistributionFill;
|
||||||
|
_nickStackView.alignment = UIStackViewAlignmentCenter;
|
||||||
|
_nickStackView.spacing = 3;
|
||||||
|
}
|
||||||
|
return _nickStackView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIStackView *)tagStackView {
|
||||||
|
if (!_tagStackView) {
|
||||||
|
_tagStackView = [[UIStackView alloc] init];
|
||||||
|
_tagStackView.axis = UILayoutConstraintAxisHorizontal;
|
||||||
|
_tagStackView.distribution = UIStackViewDistributionFill;
|
||||||
|
_tagStackView.alignment = UIStackViewAlignmentCenter;
|
||||||
|
_tagStackView.spacing = 2;
|
||||||
|
}
|
||||||
|
return _tagStackView;
|
||||||
|
}
|
||||||
|
- (NetImageView *)experImageView {
|
||||||
|
if (!_experImageView) {
|
||||||
|
NetImageConfig * config = [[NetImageConfig alloc] init];
|
||||||
|
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||||
|
config.imageType = ImageTypeUserCardLevel;
|
||||||
|
_experImageView = [[NetImageView alloc] initWithConfig:config];
|
||||||
|
_experImageView.userInteractionEnabled = YES;
|
||||||
|
_experImageView.hidden = YES;
|
||||||
|
_experImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||||
|
}
|
||||||
|
return _experImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NetImageView *)charmImageView {
|
||||||
|
if (!_charmImageView) {
|
||||||
|
NetImageConfig * config = [[NetImageConfig alloc] init];
|
||||||
|
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||||
|
config.imageType = ImageTypeUserCardLevel;
|
||||||
|
_charmImageView = [[NetImageView alloc] initWithConfig:config];
|
||||||
|
_charmImageView.userInteractionEnabled = YES;
|
||||||
|
_charmImageView.hidden = YES;
|
||||||
|
_charmImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||||
|
}
|
||||||
|
return _charmImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIView *)namePlateView {
|
||||||
|
if (!_namePlateView) {
|
||||||
|
_namePlateView = [[UIView alloc] init];
|
||||||
|
_namePlateView.backgroundColor = [UIColor clearColor];
|
||||||
|
_namePlateView.hidden = YES;
|
||||||
|
}
|
||||||
|
return _namePlateView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (NetImageView *)nameplateImageView {
|
||||||
|
if (!_nameplateImageView) {
|
||||||
|
NetImageConfig * config = [[NetImageConfig alloc] init];
|
||||||
|
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||||
|
config.imageType = ImageTypeUserCardLevel;
|
||||||
|
_nameplateImageView = [[NetImageView alloc] initWithConfig:config];
|
||||||
|
_nameplateImageView.userInteractionEnabled = YES;
|
||||||
|
_nameplateImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||||
|
}
|
||||||
|
return _nameplateImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UILabel *)nameplateLabel {
|
||||||
|
if (!_nameplateLabel) {
|
||||||
|
_nameplateLabel = [[UILabel alloc] init];
|
||||||
|
_nameplateLabel.font = [UIFont systemFontOfSize:10];
|
||||||
|
_nameplateLabel.textAlignment = NSTextAlignmentCenter;
|
||||||
|
_nameplateLabel.textColor = [UIColor whiteColor];
|
||||||
|
}
|
||||||
|
return _nameplateLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIView *)lineView {
|
||||||
|
if (!_lineView) {
|
||||||
|
_lineView = [[UIView alloc] init];
|
||||||
|
_lineView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.1];
|
||||||
|
}
|
||||||
|
return _lineView;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIButton *)roleButton {
|
||||||
|
if (!_roleButton) {
|
||||||
|
_roleButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||||
|
[_roleButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||||
|
_roleButton.titleLabel.font = [UIFont systemFontOfSize:10];
|
||||||
|
_roleButton.layer.masksToBounds = YES;
|
||||||
|
_roleButton.layer.cornerRadius = 15 / 2;
|
||||||
|
}
|
||||||
|
return _roleButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UILabel *)onMicroStatusLabel {
|
||||||
|
if (!_onMicroStatusLabel) {
|
||||||
|
_onMicroStatusLabel = [[UILabel alloc] init];
|
||||||
|
_onMicroStatusLabel.text = @"上麦";
|
||||||
|
_onMicroStatusLabel.textColor = UIColor.whiteColor;
|
||||||
|
_onMicroStatusLabel.font = [UIFont systemFontOfSize:10];
|
||||||
|
_onMicroStatusLabel.textAlignment = NSTextAlignmentCenter;
|
||||||
|
_onMicroStatusLabel.layer.cornerRadius = 7;
|
||||||
|
_onMicroStatusLabel.layer.masksToBounds = YES;
|
||||||
|
_onMicroStatusLabel.backgroundColor = [ThemeColor appEmphasizeColor];
|
||||||
|
}
|
||||||
|
return _onMicroStatusLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
@@ -6,12 +6,12 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#import "BaseViewController.h"
|
#import "BaseViewController.h"
|
||||||
|
#import "RoomHostDelegate.h"
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface XPRoomOnLineViewController : BaseViewController
|
@interface XPRoomOnLineViewController : BaseViewController
|
||||||
///房间的id
|
|
||||||
@property (nonatomic,copy) NSString *roomId;
|
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
NS_ASSUME_NONNULL_END
|
||||||
|
@@ -14,10 +14,27 @@
|
|||||||
///Tool
|
///Tool
|
||||||
#import "ThemeColor.h"
|
#import "ThemeColor.h"
|
||||||
#import "XPMacro.h"
|
#import "XPMacro.h"
|
||||||
#import "XPRoomRoleTableViewCell.h"
|
#import "UIButton+EnlargeTouchArea.h"
|
||||||
|
///Model
|
||||||
|
#import "UserInfoModel.h"
|
||||||
|
#import "MicroQueueModel.h"
|
||||||
|
#import "RoomInfoModel.h"
|
||||||
|
#import "XPUserCardInfoModel.h"
|
||||||
|
///View
|
||||||
|
#import "XPRoomOnlineTableViewCell.h"
|
||||||
#import "XPRoomRoleEmptyTableViewCell.h"
|
#import "XPRoomRoleEmptyTableViewCell.h"
|
||||||
|
///VC
|
||||||
|
#import "XPUserCardViewController.h"
|
||||||
|
|
||||||
@interface XPRoomOnLineViewController ()<UITableViewDelegate, UITableViewDataSource, XPRoomRoleTableViewCellDelegate>
|
@interface XPRoomOnLineViewController ()<UITableViewDelegate, UITableViewDataSource, NIMChatManagerDelegate>
|
||||||
|
///导航栏
|
||||||
|
@property (nonatomic,strong) UIView * navView;
|
||||||
|
///返回按钮
|
||||||
|
@property (nonatomic,strong) UIButton *backButton;
|
||||||
|
///显示标题
|
||||||
|
@property (nonatomic,strong) UILabel *titleLabel;
|
||||||
|
///背景图
|
||||||
|
@property (nonatomic,strong) UIImageView *backImageView;
|
||||||
///总的数据
|
///总的数据
|
||||||
@property (nonatomic,strong) NSMutableArray *originArray;
|
@property (nonatomic,strong) NSMutableArray *originArray;
|
||||||
///需要显示的数据
|
///需要显示的数据
|
||||||
@@ -28,12 +45,38 @@
|
|||||||
@property (nonatomic,strong) NIMChatroomMember *lastMember;
|
@property (nonatomic,strong) NIMChatroomMember *lastMember;
|
||||||
///临时成员最后一个
|
///临时成员最后一个
|
||||||
@property (nonatomic,strong) NIMChatroomMember *tmpLastMember;
|
@property (nonatomic,strong) NIMChatroomMember *tmpLastMember;
|
||||||
|
///host
|
||||||
|
@property (nonatomic,weak) id<RoomHostDelegate>hostDelegate;
|
||||||
|
///房间的id
|
||||||
|
@property (nonatomic,copy) NSString *roomId;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation XPRoomOnLineViewController
|
@implementation XPRoomOnLineViewController
|
||||||
|
- (void)dealloc {
|
||||||
|
[[NIMSDK sharedSDK].chatManager removeDelegate:self];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate {
|
||||||
|
if (self = [super init]) {
|
||||||
|
self.hostDelegate = delegate;
|
||||||
|
self.roomId= [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId];
|
||||||
|
}
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)isHiddenNavBar {
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)viewWillAppear:(BOOL)animated {
|
||||||
|
[super viewWillAppear:animated];
|
||||||
|
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
|
//监听云信消息
|
||||||
|
[[NIMSDK sharedSDK].chatManager addDelegate:self];
|
||||||
[self initHeaderAndFooterRrfresh];
|
[self initHeaderAndFooterRrfresh];
|
||||||
[self initSubViews];
|
[self initSubViews];
|
||||||
[self initSubViewConstraints];
|
[self initSubViewConstraints];
|
||||||
@@ -41,13 +84,39 @@
|
|||||||
|
|
||||||
#pragma mark - Private Method
|
#pragma mark - Private Method
|
||||||
- (void)initSubViews {
|
- (void)initSubViews {
|
||||||
|
[self.view addSubview:self.backImageView];
|
||||||
[self.view addSubview:self.tableView];
|
[self.view addSubview:self.tableView];
|
||||||
|
[self.view addSubview:self.navView];
|
||||||
|
|
||||||
|
[self.navView addSubview:self.backButton];
|
||||||
|
[self.navView addSubview:self.titleLabel];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)initSubViewConstraints {
|
- (void)initSubViewConstraints {
|
||||||
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
make.edges.mas_equalTo(self.view);
|
make.edges.mas_equalTo(self.view);
|
||||||
}];
|
}];
|
||||||
|
|
||||||
|
[self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.right.top.mas_equalTo(self.view);
|
||||||
|
make.height.mas_equalTo(kNavigationHeight);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.left.right.bottom.mas_equalTo(self.view);
|
||||||
|
make.top.mas_equalTo(self.navView.mas_bottom);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.backButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.size.mas_equalTo(CGSizeMake(22, 22));
|
||||||
|
make.left.mas_equalTo(self.navView).offset(8);
|
||||||
|
make.centerY.mas_equalTo(self.titleLabel);
|
||||||
|
}];
|
||||||
|
|
||||||
|
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||||
|
make.centerX.mas_equalTo(self.navView);
|
||||||
|
make.centerY.equalTo(self.navView.mas_bottom).mas_offset(-22);
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)initHeaderAndFooterRrfresh {
|
- (void)initHeaderAndFooterRrfresh {
|
||||||
@@ -122,8 +191,6 @@
|
|||||||
request.lastMember = self.lastMember;
|
request.lastMember = self.lastMember;
|
||||||
request.limit = 200;
|
request.limit = 200;
|
||||||
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
|
[[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray<NIMChatroomMember *> * _Nullable members) {
|
||||||
[self.tableView.mj_header endRefreshing];
|
|
||||||
[self.tableView.mj_footer endRefreshing];
|
|
||||||
if (error == nil) {
|
if (error == nil) {
|
||||||
if (members.count > 0) {
|
if (members.count > 0) {
|
||||||
self.lastMember = members.lastObject;
|
self.lastMember = members.lastObject;
|
||||||
@@ -177,6 +244,54 @@
|
|||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///判断是否在麦上
|
||||||
|
- (BOOL)memberIsOnMicro:(NSString *)userId{
|
||||||
|
NSArray *chatRoomMicSequences = [self.hostDelegate.getMicroQueue allValues] ;
|
||||||
|
if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) {
|
||||||
|
for (int i = 0; i < chatRoomMicSequences.count; i ++) {
|
||||||
|
MicroQueueModel *chatRoomMicSequence = chatRoomMicSequences[i];
|
||||||
|
if (chatRoomMicSequence.userInfo.uid == userId.integerValue) {
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return NO;
|
||||||
|
}
|
||||||
|
|
||||||
|
#pragma mark - NIMChatManagerDelegate
|
||||||
|
- (void)onRecvMessages:(NSArray<NIMMessage *> *)messages {
|
||||||
|
for (NIMMessage * message in messages) {
|
||||||
|
// 非房间内消息不处理
|
||||||
|
if (message.session.sessionType != NIMSessionTypeChatroom) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 非本房间不处理
|
||||||
|
if (![message.session.sessionId isEqualToString:self.roomId]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (message.messageType == NIMMessageTypeNotification) {
|
||||||
|
NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject;
|
||||||
|
NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content;
|
||||||
|
switch (content.eventType) {
|
||||||
|
case NIMChatroomEventTypeEnter:
|
||||||
|
case NIMChatroomEventTypeExit:
|
||||||
|
case NIMChatroomEventTypeAddManager:
|
||||||
|
case NIMChatroomEventTypeRemoveManager:
|
||||||
|
case NIMChatroomEventTypeAddBlack:
|
||||||
|
case NIMChatroomEventTypeRemoveBlack:
|
||||||
|
case NIMChatroomEventTypeQueueChange:
|
||||||
|
case NIMChatroomEventTypeKicked:
|
||||||
|
[self headerRefresh];
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - UITableViewDelegate And UITableViewDataSource
|
#pragma mark - UITableViewDelegate And UITableViewDataSource
|
||||||
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
|
||||||
@@ -185,17 +300,13 @@
|
|||||||
|
|
||||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
if (self.datasource.count > 0) {
|
if (self.datasource.count > 0) {
|
||||||
XPRoomRoleTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomRoleTableViewCell class])];
|
XPRoomOnlineTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])];
|
||||||
if (cell == nil) {
|
if (cell == nil) {
|
||||||
cell = [[XPRoomRoleTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRoleTableViewCell class])];
|
cell = [[XPRoomOnlineTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])];
|
||||||
}
|
|
||||||
cell.delegate = self;
|
|
||||||
cell.member = [self.datasource objectAtIndex:indexPath.row];
|
|
||||||
if (indexPath.row == (self.datasource.count -1)) {
|
|
||||||
cell.lineView.hidden = YES;
|
|
||||||
} else {
|
|
||||||
cell.lineView.hidden = NO;
|
|
||||||
}
|
}
|
||||||
|
NIMChatroomMember * member = [self.datasource objectAtIndex:indexPath.row];
|
||||||
|
cell.member = member;
|
||||||
|
cell.isOnMicro = [self memberIsOnMicro:member.userId];
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -204,22 +315,50 @@
|
|||||||
cell = [[XPRoomRoleEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])];
|
cell = [[XPRoomRoleEmptyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])];
|
||||||
}
|
}
|
||||||
cell.titleLabel.text = @"暂没有房间成员在线";
|
cell.titleLabel.text = @"暂没有房间成员在线";
|
||||||
|
cell.backgroundColor = [UIColor clearColor];
|
||||||
return cell;
|
return cell;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
if (self.datasource.count > 0) {
|
if (self.datasource.count > 0) {
|
||||||
return 55;
|
return 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
return KScreenHeight - kNavigationHeight;
|
return KScreenHeight - kNavigationHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - XPRoomRoleTableViewCellDelegate
|
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||||
- (void)xPRoomRoleTableViewCell:(NSString *)view didClickMember:(NIMChatroomMember *)member {
|
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||||
|
if (self.datasource.count > 0) {
|
||||||
|
NIMChatroomMember * member = [self.datasource objectAtIndex:indexPath.row];
|
||||||
|
RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo;
|
||||||
|
NSString * targetUid = member.userId;
|
||||||
|
XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init];
|
||||||
|
[[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||||
|
if (targetUid.integerValue == obj.userInfo.uid) {
|
||||||
|
model.position = [NSString stringWithFormat:@"%d", obj.microState.position];
|
||||||
|
model.posState = (UserCardMicroPosStateType)obj.microState.posState;
|
||||||
|
model.micState = (UserCardMicroMicStateType)obj.microState.micState;
|
||||||
|
*stop = YES;
|
||||||
|
}
|
||||||
|
}];
|
||||||
|
model.uid = targetUid;
|
||||||
|
model.roomId = [NSString stringWithFormat:@"%ld", roomInfo.roomId];
|
||||||
|
model.leaveMode = roomInfo.leaveMode;
|
||||||
|
model.showGiftValue = roomInfo.showGiftValue;
|
||||||
|
model.avatar = roomInfo.avatar;
|
||||||
|
model.roomUid = [NSString stringWithFormat:@"%ld", roomInfo.uid];
|
||||||
|
model.nick = member.roomNickname;
|
||||||
|
model.delegate = self.hostDelegate;
|
||||||
|
XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model];
|
||||||
|
[self.navigationController presentViewController:userCardVC animated:YES completion:nil];
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#pragma mark - Event Response
|
||||||
|
- (void)backButtonAction:(UIButton *)sender {
|
||||||
|
[self.navigationController popViewControllerAnimated:YES];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark - Getters And Setters
|
#pragma mark - Getters And Setters
|
||||||
- (UITableView *)tableView {
|
- (UITableView *)tableView {
|
||||||
@@ -234,12 +373,54 @@
|
|||||||
if (@available(iOS 11.0, *)) {
|
if (@available(iOS 11.0, *)) {
|
||||||
_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
|
_tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
|
||||||
}
|
}
|
||||||
[_tableView registerClass:[XPRoomRoleTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomRoleTableViewCell class])];
|
[_tableView registerClass:[XPRoomOnlineTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])];
|
||||||
[_tableView registerClass:[XPRoomRoleEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])];
|
[_tableView registerClass:[XPRoomRoleEmptyTableViewCell class] forCellReuseIdentifier:NSStringFromClass([XPRoomRoleEmptyTableViewCell class])];
|
||||||
}
|
}
|
||||||
return _tableView;
|
return _tableView;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (UIButton *)backButton {
|
||||||
|
if (!_backButton) {
|
||||||
|
_backButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||||
|
[_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal];
|
||||||
|
[_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
[_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10];
|
||||||
|
}
|
||||||
|
return _backButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UILabel *)titleLabel {
|
||||||
|
if (!_titleLabel) {
|
||||||
|
_titleLabel = [[UILabel alloc] init];
|
||||||
|
_titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||||
|
_titleLabel.font = [UIFont systemFontOfSize:15];
|
||||||
|
_titleLabel.text = @"在线列表";
|
||||||
|
_titleLabel.textColor = [UIColor whiteColor];
|
||||||
|
}
|
||||||
|
return _titleLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UIView *)navView {
|
||||||
|
if (!_navView) {
|
||||||
|
_navView = [[UIView alloc] init];
|
||||||
|
_navView.backgroundColor = [UIColor clearColor];
|
||||||
|
}
|
||||||
|
return _navView;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
- (UIImageView *)backImageView {
|
||||||
|
if (!_backImageView) {
|
||||||
|
_backImageView = [[UIImageView alloc] init];
|
||||||
|
_backImageView.userInteractionEnabled = YES;
|
||||||
|
_backImageView.layer.masksToBounds = YES;
|
||||||
|
_backImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||||
|
_backImageView.image = [UIImage imageNamed:@"room_background"];
|
||||||
|
}
|
||||||
|
return _backImageView;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
- (NSMutableArray *)datasource {
|
- (NSMutableArray *)datasource {
|
||||||
if (!_datasource) {
|
if (!_datasource) {
|
||||||
_datasource = [NSMutableArray array];
|
_datasource = [NSMutableArray array];
|
||||||
|
Reference in New Issue
Block a user