房间内私聊
This commit is contained in:
@@ -431,6 +431,9 @@
|
||||
E84BF7DA277C72AC00EF8877 /* XPRoomRoleTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7D9277C72AC00EF8877 /* XPRoomRoleTableViewCell.m */; };
|
||||
E84BF7DD277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7DC277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m */; };
|
||||
E84BF7E0277C869A00EF8877 /* XPRoomOnLineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E84BF7DF277C869A00EF8877 /* XPRoomOnLineViewController.m */; };
|
||||
E84CBCE128436D3C00D43221 /* XPMineContactViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE028436D3C00D43221 /* XPMineContactViewController.m */; };
|
||||
E84CBCE4284372D800D43221 /* XPRoomHalfMessageView.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE3284372D800D43221 /* XPRoomHalfMessageView.m */; };
|
||||
E84CBCE72843807500D43221 /* XPMineFriendPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E84CBCE62843807400D43221 /* XPMineFriendPresenter.m */; };
|
||||
E851E45827FF024B002F3ACB /* XPMineGuildSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E851E45727FF024B002F3ACB /* XPMineGuildSearchViewController.m */; };
|
||||
E851E45B27FF02DF002F3ACB /* XPGuildSearchPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E851E45A27FF02DF002F3ACB /* XPGuildSearchPresenter.m */; };
|
||||
E851E45F27FF0FEB002F3ACB /* XPGuildSearchNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = E851E45E27FF0FEB002F3ACB /* XPGuildSearchNavView.m */; };
|
||||
@@ -1685,6 +1688,13 @@
|
||||
E84BF7DC277C765400EF8877 /* XPRoomRoleEmptyTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomRoleEmptyTableViewCell.m; sourceTree = "<group>"; };
|
||||
E84BF7DE277C869A00EF8877 /* XPRoomOnLineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomOnLineViewController.h; sourceTree = "<group>"; };
|
||||
E84BF7DF277C869A00EF8877 /* XPRoomOnLineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomOnLineViewController.m; sourceTree = "<group>"; };
|
||||
E84CBCDF28436D3C00D43221 /* XPMineContactViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineContactViewController.h; sourceTree = "<group>"; };
|
||||
E84CBCE028436D3C00D43221 /* XPMineContactViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineContactViewController.m; sourceTree = "<group>"; };
|
||||
E84CBCE2284372D800D43221 /* XPRoomHalfMessageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomHalfMessageView.h; sourceTree = "<group>"; };
|
||||
E84CBCE3284372D800D43221 /* XPRoomHalfMessageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomHalfMessageView.m; sourceTree = "<group>"; };
|
||||
E84CBCE52843807400D43221 /* XPMineFriendPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendPresenter.h; sourceTree = "<group>"; };
|
||||
E84CBCE62843807400D43221 /* XPMineFriendPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineFriendPresenter.m; sourceTree = "<group>"; };
|
||||
E84CBCE8284380B300D43221 /* XPMineFriendProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineFriendProtocol.h; sourceTree = "<group>"; };
|
||||
E851E45627FF024B002F3ACB /* XPMineGuildSearchViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineGuildSearchViewController.h; sourceTree = "<group>"; };
|
||||
E851E45727FF024B002F3ACB /* XPMineGuildSearchViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineGuildSearchViewController.m; sourceTree = "<group>"; };
|
||||
E851E45927FF02DF002F3ACB /* XPGuildSearchPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPGuildSearchPresenter.h; sourceTree = "<group>"; };
|
||||
@@ -5321,6 +5331,10 @@
|
||||
E896EF9E2771AE7B00AD2CC1 /* XPMineAttentionViewController.m */,
|
||||
E896EFA02771AE9400AD2CC1 /* XPMineFriendViewController.h */,
|
||||
E896EFA12771AE9400AD2CC1 /* XPMineFriendViewController.m */,
|
||||
E84CBCDF28436D3C00D43221 /* XPMineContactViewController.h */,
|
||||
E84CBCE028436D3C00D43221 /* XPMineContactViewController.m */,
|
||||
E84CBCE2284372D800D43221 /* XPRoomHalfMessageView.h */,
|
||||
E84CBCE3284372D800D43221 /* XPRoomHalfMessageView.m */,
|
||||
);
|
||||
path = Friend;
|
||||
sourceTree = "<group>";
|
||||
@@ -6430,6 +6444,8 @@
|
||||
E896EF932771AAC100AD2CC1 /* XPMineFansPresenter.m */,
|
||||
E896EF952771AAE400AD2CC1 /* XPMineAttentionPresenter.h */,
|
||||
E896EF962771AAE400AD2CC1 /* XPMineAttentionPresenter.m */,
|
||||
E84CBCE52843807400D43221 /* XPMineFriendPresenter.h */,
|
||||
E84CBCE62843807400D43221 /* XPMineFriendPresenter.m */,
|
||||
9BD9A17727A0EC57004186FE /* XPMineVisitorPresenter.h */,
|
||||
9BD9A17827A0EC57004186FE /* XPMineVisitorPresenter.m */,
|
||||
9B1B729628002147003FACE9 /* XPMineFansTeamPresenter.h */,
|
||||
@@ -6462,6 +6478,7 @@
|
||||
E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */,
|
||||
E896EF982771AB0000AD2CC1 /* XPMineFansProtocol.h */,
|
||||
E896EF992771AB1800AD2CC1 /* XPMineAttentionProtocol.h */,
|
||||
E84CBCE8284380B300D43221 /* XPMineFriendProtocol.h */,
|
||||
9BD9A17627A0E953004186FE /* XPMineVisitorProtocol.h */,
|
||||
9B1B7299280021E7003FACE9 /* XPMineAnchorFansTeamProtocol.h */,
|
||||
);
|
||||
@@ -6888,6 +6905,7 @@
|
||||
E80B0737280D790400A79F63 /* GuildMessageModel.m in Sources */,
|
||||
E8B846D826FDE17300A777FE /* XPMineRechargeProtocol.h in Sources */,
|
||||
E88C72A6282921D60047FB2B /* XPRoomBackMusicPlayerView.m in Sources */,
|
||||
E84CBCE72843807500D43221 /* XPMineFriendPresenter.m in Sources */,
|
||||
E82D5C7D276B343300858D6D /* YYAnimatedImageView+ImageShow.m in Sources */,
|
||||
E851E45F27FF0FEB002F3ACB /* XPGuildSearchNavView.m in Sources */,
|
||||
E8B846C726FDB45000A777FE /* XPMineUserInfoAlbumProtocol.h in Sources */,
|
||||
@@ -6929,6 +6947,7 @@
|
||||
E8E20BE2281695800033B688 /* XPMineLoginPasswordViewController.m in Sources */,
|
||||
E824543826F5820A00BE8163 /* XPLoginVerifBindPhonePresenter.m in Sources */,
|
||||
E8B846BF26FD827900A777FE /* XPMineUserInfoAlbumViewController.m in Sources */,
|
||||
E84CBCE128436D3C00D43221 /* XPMineContactViewController.m in Sources */,
|
||||
E8D48253278D8228003C1D08 /* AcrossRoomPKPanelModel.m in Sources */,
|
||||
E824545C26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.m in Sources */,
|
||||
9B92A3562798096000AD168F /* XPSkillCardPresenter.m in Sources */,
|
||||
@@ -7088,6 +7107,7 @@
|
||||
E8D34D6028082BA5009C4835 /* XPMineUserDataPresenter.m in Sources */,
|
||||
9B16A34B27E1915A00E13A98 /* XPTrumpetPresenter.m in Sources */,
|
||||
E8A6C29827CF448700AC7442 /* XPHomeCollectRoomTableViewCell.m in Sources */,
|
||||
E84CBCE4284372D800D43221 /* XPRoomHalfMessageView.m in Sources */,
|
||||
E8C1672D2806BD8B00ECB15C /* XPGuildSuperAdminRoomCollectionViewCell.m in Sources */,
|
||||
E8EEB8F226FC2050007C6EBA /* SDPhotoBrowser.m in Sources */,
|
||||
E81C27AB26EF2D920031E639 /* ThirdUserInfo.m in Sources */,
|
||||
|
@@ -26,6 +26,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,assign) BOOL isLike;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<SessionNavViewDelegate> delegate;
|
||||
///是否在房间中
|
||||
@property (nonatomic,assign) BOOL isInRoom;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -134,6 +134,11 @@
|
||||
self.likeButton.hidden = _isLike;
|
||||
}
|
||||
|
||||
- (void)setIsInRoom:(BOOL)isInRoom {
|
||||
_isInRoom = isInRoom;
|
||||
self.reportButton.hidden = _isInRoom;
|
||||
}
|
||||
|
||||
- (UIButton *)backButton {
|
||||
if (!_backButton) {
|
||||
_backButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
|
@@ -6,6 +6,7 @@
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
#import "SessionListViewController.h"
|
||||
#import <NIMSDK/NIMSDK.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@@ -13,7 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@interface SessionViewController : MvpViewController
|
||||
|
||||
- (instancetype)initWithSession:(NIMSession *)session;
|
||||
|
||||
@property (nonatomic, assign) SessionListOpenType openType;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -132,6 +132,7 @@
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initViews {
|
||||
self.sessionNavView.isInRoom = self.openType == SessionListOpenTypeRoom;
|
||||
[self.view addSubview:self.sessionNavView];
|
||||
[self.view addSubview:self.followInRoomView];
|
||||
[self.view addSubview:self.sessionTableView];
|
||||
|
@@ -8,7 +8,7 @@
|
||||
//
|
||||
|
||||
#import "BaseViewController.h"
|
||||
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
#import <NIMSDK/NIMSDK.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@@ -18,7 +18,7 @@ typedef NS_ENUM(NSUInteger, SessionListOpenType) {
|
||||
SessionListOpenTypeRoom = 2,
|
||||
};
|
||||
|
||||
@interface SessionListViewController : BaseViewController
|
||||
@interface SessionListViewController : BaseViewController<JXCategoryListContentViewDelegate>
|
||||
|
||||
- (instancetype)initWithType:(SessionListOpenType)type;
|
||||
|
||||
|
@@ -41,7 +41,7 @@
|
||||
}
|
||||
|
||||
- (BOOL)isHiddenNavBar {
|
||||
return self.openType == SessionListOpenTypeDefault;
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (instancetype)initWithType:(SessionListOpenType)type {
|
||||
@@ -73,7 +73,7 @@
|
||||
|
||||
- (void)initViews {
|
||||
self.title = @"消息";
|
||||
if ([self isHiddenNavBar]) {
|
||||
if (self.openType == SessionListOpenTypeDefault) {
|
||||
[self.customNavigationBar addSubview:self.titleLabel];
|
||||
[self.view addSubview:self.customNavigationBar];
|
||||
}
|
||||
@@ -81,7 +81,7 @@
|
||||
}
|
||||
|
||||
- (void)initLayout {
|
||||
if ([self isHiddenNavBar]) {
|
||||
if (self.openType == SessionListOpenTypeDefault) {
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.center.mas_equalTo(self.customNavigationBar);
|
||||
}];
|
||||
@@ -89,7 +89,7 @@
|
||||
|
||||
[self.sessionListView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.bottom.mas_equalTo(self.view);
|
||||
if ([self isHiddenNavBar]) {
|
||||
if (self.openType == SessionListOpenTypeDefault) {
|
||||
make.top.mas_equalTo(self.customNavigationBar.mas_bottom);
|
||||
} else {
|
||||
make.top.mas_equalTo(self.view);
|
||||
@@ -126,6 +126,7 @@
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
NIMRecentSession *recentSession = self.recentSessions[indexPath.row];
|
||||
SessionViewController *vc = [[SessionViewController alloc] initWithSession:recentSession.session];
|
||||
vc.openType = self.openType;
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
|
||||
@@ -223,6 +224,11 @@
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - JXCategoryListContentViewDelegate
|
||||
- (UIView *)listView {
|
||||
return self.view;
|
||||
}
|
||||
|
||||
#pragma mark - Private
|
||||
- (NSInteger)findInsertPlace:(NIMRecentSession *)recentSession{
|
||||
__block NSUInteger matchIdx = 0;
|
||||
|
@@ -34,6 +34,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,copy) NSString *userInRoomUid;
|
||||
///贵族信息
|
||||
@property (nonatomic, strong) UserVipInfoVo *userVipInfoVO;
|
||||
///是否在房间中 本地字段
|
||||
@property (nonatomic,assign) BOOL isInRoom;
|
||||
|
||||
@end
|
||||
|
||||
|
16
xplan-ios/Main/Mine/Presenter/XPMineFriendPresenter.h
Normal file
16
xplan-ios/Main/Mine/Presenter/XPMineFriendPresenter.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPMineFriendPresenter.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/5/29.
|
||||
//
|
||||
|
||||
#import "BaseMvpPresenter.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineFriendPresenter : BaseMvpPresenter
|
||||
- (void)getUserListInfo:(NSArray *)array;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
26
xplan-ios/Main/Mine/Presenter/XPMineFriendPresenter.m
Normal file
26
xplan-ios/Main/Mine/Presenter/XPMineFriendPresenter.m
Normal file
@@ -0,0 +1,26 @@
|
||||
//
|
||||
// XPMineFriendPresenter.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/5/29.
|
||||
//
|
||||
|
||||
#import "XPMineFriendPresenter.h"
|
||||
#import "Api+Mine.h"
|
||||
#import "XPMineFriendProtocol.h"
|
||||
#import "UserInfoModel.h"
|
||||
|
||||
@implementation XPMineFriendPresenter
|
||||
|
||||
- (void)getUserListInfo:(NSArray *)array {
|
||||
NSString * uids = @"";
|
||||
if (array.count > 0) {
|
||||
uids = [array componentsJoinedByString:@","];
|
||||
}
|
||||
[Api getUsersListInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSArray *users= [UserInfoModel modelsWithArray:data.data];
|
||||
[[self getView] getUserListInfoSuccess:users];
|
||||
}] uids:uids];
|
||||
}
|
||||
|
||||
@end
|
16
xplan-ios/Main/Mine/Protocol/XPMineFriendProtocol.h
Normal file
16
xplan-ios/Main/Mine/Protocol/XPMineFriendProtocol.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPMineFriendProtocol.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/5/29.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol XPMineFriendProtocol <NSObject>
|
||||
- (void)getUserListInfoSuccess:(NSArray *)list;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -123,7 +123,7 @@
|
||||
}
|
||||
self.sexImageView.image = [UIImage imageNamed:sexStr];
|
||||
self.signLabel.text = _fansInfo.userDesc && _fansInfo.userDesc.length > 0? _fansInfo.userDesc : @"这个人很懒还没有签名";
|
||||
self.findButton.hidden = !_fansInfo.userInRoomUid;
|
||||
self.findButton.hidden = _fansInfo.userInRoomUid.length <= 0 || _fansInfo.isInRoom;
|
||||
UIImage* image = self.experImageView.image;
|
||||
if (image) {
|
||||
CGFloat scale = image.size.width / image.size.height;
|
||||
|
@@ -17,7 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@interface XPMineFansTableViewCell : UITableViewCell
|
||||
///粉丝信息
|
||||
@property (nonatomic,strong) FansInfoModel *fansInfo;
|
||||
|
||||
///是否在房间中
|
||||
@property (nonatomic,assign) BOOL isInRoom;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPMineFansTableViewCellDelegate> delegate;
|
||||
|
||||
|
@@ -127,7 +127,7 @@
|
||||
|
||||
BOOL isMyFriend = [[NIMSDK sharedSDK].userManager isMyFriend:_fansInfo.uid];
|
||||
self.attentionButton.enabled = !isMyFriend;
|
||||
|
||||
self.attentionButton.hidden = _fansInfo.isInRoom;
|
||||
UIImage* image = self.experImageView.image;
|
||||
if (image) {
|
||||
CGFloat scale = image.size.width / image.size.height;
|
||||
|
@@ -39,7 +39,7 @@
|
||||
- (void)initSubViewConstraints {
|
||||
[self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(self.contentView).offset(250);
|
||||
make.bottom.mas_equalTo(self.contentView.mas_centerY).offset(-15);
|
||||
make.size.mas_equalTo(CGSizeMake(100, 100));
|
||||
}];
|
||||
|
||||
@@ -49,6 +49,7 @@
|
||||
}];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
|
||||
- (void)setEmptyTitle:(NSString *)emptyTitle {
|
||||
_emptyTitle = emptyTitle;
|
||||
if (_emptyTitle.length > 0) {
|
||||
|
@@ -8,8 +8,10 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class UserInfoModel;
|
||||
@interface XPMineFriendTableViewCell : UITableViewCell
|
||||
@property (nonatomic,strong) UserInfoModel *userInfo;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -13,6 +13,8 @@
|
||||
#import "NetImageView.h"
|
||||
#import "ThemeColor.h"
|
||||
#import "UIImage+Utils.h"
|
||||
///Model
|
||||
#import "UserInfoModel.h"
|
||||
|
||||
@interface XPMineFriendTableViewCell ()
|
||||
///头像
|
||||
@@ -29,6 +31,8 @@
|
||||
@property (nonatomic,strong) NetImageView *charmImageView;
|
||||
///签名
|
||||
@property (nonatomic,strong) UILabel *signLabel;
|
||||
///分割线
|
||||
@property (nonatomic,strong) UIView *lineView;
|
||||
@end
|
||||
|
||||
|
||||
@@ -48,6 +52,12 @@
|
||||
[self.contentView addSubview:self.avatarImageView];
|
||||
[self.contentView addSubview:self.stackView];
|
||||
[self.contentView addSubview:self.signLabel];
|
||||
[self.contentView addSubview:self.lineView];
|
||||
|
||||
[self.stackView addArrangedSubview:self.nickLabel];
|
||||
[self.stackView addArrangedSubview:self.sexImageView];
|
||||
[self.stackView addArrangedSubview:self.experImageView];
|
||||
[self.stackView addArrangedSubview:self.charmImageView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -66,9 +76,63 @@
|
||||
make.left.mas_equalTo(self.stackView);
|
||||
make.top.mas_equalTo(self.avatarImageView.mas_centerY).offset(2);
|
||||
}];
|
||||
|
||||
[self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.stackView);
|
||||
make.bottom.mas_equalTo(self.contentView);
|
||||
make.height.mas_equalTo(1);
|
||||
make.right.mas_equalTo(self.contentView).offset(-15);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setUserInfo:(UserInfoModel *)userInfo {
|
||||
_userInfo = userInfo;
|
||||
if (_userInfo) {
|
||||
self.avatarImageView.imageUrl = _userInfo.avatar;
|
||||
self.experImageView.imageUrl = _userInfo.userLevelVo.experUrl;
|
||||
self.charmImageView.imageUrl = _userInfo.userLevelVo.charmUrl;
|
||||
self.nickLabel.text = _userInfo.nick;
|
||||
NSString *sexStr;
|
||||
if (_userInfo.gender == GenderType_Male) {
|
||||
sexStr = @"common_male";
|
||||
} else {
|
||||
sexStr = @"common_female";
|
||||
}
|
||||
self.sexImageView.image = [UIImage imageNamed:sexStr];
|
||||
self.signLabel.text = _userInfo.userDesc && _userInfo.userDesc.length > 0? _userInfo.userDesc : @"这个人很懒还没有签名";
|
||||
UIImage* image = self.experImageView.image;
|
||||
if (image) {
|
||||
CGFloat scale = image.size.width / image.size.height;
|
||||
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
|
||||
}];
|
||||
} else {
|
||||
NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.experUrl];
|
||||
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
|
||||
CGFloat scale = myImage.size.width / myImage.size.height;
|
||||
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
|
||||
}];
|
||||
}
|
||||
|
||||
UIImage* charmImage = self.charmImageView.image;
|
||||
if (charmImage) {
|
||||
CGFloat scale = charmImage.size.width / charmImage.size.height;
|
||||
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
|
||||
}];
|
||||
} else {
|
||||
NSURL *imgUrl = [NSURL URLWithString:_userInfo.userLevelVo.charmUrl];
|
||||
UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]];
|
||||
CGFloat scale = myImage.size.width / myImage.size.height;
|
||||
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(20* scale, 20));
|
||||
}];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (NetImageView *)avatarImageView {
|
||||
if (!_avatarImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
@@ -135,4 +199,12 @@
|
||||
}
|
||||
return _signLabel;
|
||||
}
|
||||
|
||||
- (UIView *)lineView {
|
||||
if (!_lineView) {
|
||||
_lineView = [[UIView alloc] init];
|
||||
_lineView.backgroundColor = [ThemeColor dividerColor];
|
||||
}
|
||||
return _lineView;
|
||||
}
|
||||
@end
|
||||
|
@@ -6,11 +6,12 @@
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineAttentionViewController : MvpViewController
|
||||
|
||||
@interface XPMineAttentionViewController : MvpViewController<JXCategoryListContentViewDelegate>
|
||||
//是否在房间内
|
||||
@property (nonatomic,assign) BOOL isInRoom;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#import <MJRefresh/MJRefresh.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "FansInfoModel.h"
|
||||
///View
|
||||
@@ -26,6 +27,7 @@
|
||||
///VC
|
||||
#import "XPMineUserInfoViewController.h"
|
||||
#import "XPRoomViewController.h"
|
||||
#import "SessionViewController.h"
|
||||
|
||||
@interface XPMineAttentionViewController ()<UITableViewDelegate,UITableViewDataSource, XPMineAttentionProtocol, XPMineAttentionTableViewCellDelegate>
|
||||
///列表
|
||||
@@ -40,6 +42,10 @@
|
||||
|
||||
@implementation XPMineAttentionViewController
|
||||
|
||||
- (BOOL)isHiddenNavBar {
|
||||
return self.isInRoom ? YES : NO;
|
||||
}
|
||||
|
||||
- (XPMineAttentionPresenter *)createPresenter {
|
||||
return [[XPMineAttentionPresenter alloc] init];
|
||||
}
|
||||
@@ -125,6 +131,10 @@
|
||||
return self.datasource.count > 0 ? self.datasource.count : 1;
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
return self.datasource.count > 0 ? 65 : self.isInRoom ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight);
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (self.datasource.count > 0) {
|
||||
XPMineAttentionTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineAttentionTableViewCell class])];
|
||||
@@ -132,7 +142,9 @@
|
||||
cell = [[XPMineAttentionTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineAttentionTableViewCell class])];
|
||||
}
|
||||
cell.delegate = self;
|
||||
cell.fansInfo = [self.datasource objectAtIndex:indexPath.row];
|
||||
FansInfoModel * fansInfo = [self.datasource objectAtIndex:indexPath.row];
|
||||
fansInfo.isInRoom = self.isInRoom;
|
||||
cell.fansInfo = fansInfo;
|
||||
return cell;
|
||||
}
|
||||
|
||||
@@ -147,11 +159,19 @@
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
if (self.datasource.count > 0) {
|
||||
if (self.isInRoom) {
|
||||
FansInfoModel * fansInfoModel = [self.datasource objectAtIndex:indexPath.row];
|
||||
SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:fansInfoModel.uid type:NIMSessionTypeP2P]];
|
||||
sessionVC.openType = SessionListOpenTypeRoom;
|
||||
[self.navigationController pushViewController:sessionVC animated:YES];
|
||||
} else {
|
||||
XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init];
|
||||
FansInfoModel * fansInfoModel = [self.datasource objectAtIndex:indexPath.row];
|
||||
fansInfoModel.isInRoom = self.isInRoom;
|
||||
userInfoVC.uid = fansInfoModel.uid.integerValue;
|
||||
[self.navigationController pushViewController:userInfoVC animated:YES];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - XPMineAttentionTableViewCellDelegate
|
||||
@@ -168,6 +188,11 @@
|
||||
[XPRoomViewController openRoom:uid viewController:self];
|
||||
}
|
||||
|
||||
#pragma mark - JXCategoryListContentViewDelegate
|
||||
- (UIView *)listView {
|
||||
return self.view;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
|
||||
- (UITableView *)tableView {
|
||||
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPMineContactViewController.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/5/29.
|
||||
//
|
||||
|
||||
#import "BaseViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineContactViewController : BaseViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
160
xplan-ios/Main/Mine/View/Friend/XPMineContactViewController.m
Normal file
160
xplan-ios/Main/Mine/View/Friend/XPMineContactViewController.m
Normal file
@@ -0,0 +1,160 @@
|
||||
//
|
||||
// XPMineContactViewController.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/5/29.
|
||||
//
|
||||
|
||||
#import "XPMineContactViewController.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
#import <JXCategoryView/JXCategoryView.h>
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///View
|
||||
#import "SessionListViewController.h"
|
||||
#import "XPMineFriendViewController.h"
|
||||
#import "XPMineAttentionViewController.h"
|
||||
#import "XPMineFansViewController.h"
|
||||
@interface XPMineContactViewController ()<JXCategoryViewDelegate,JXCategoryListContainerViewDelegate>
|
||||
///标题
|
||||
@property (nonatomic,strong) NSArray<NSString *> *titles;
|
||||
///滑块
|
||||
@property (nonatomic,strong) JXCategoryTitleView *titleView;
|
||||
@property (nonatomic, strong) JXCategoryListContainerView *listContainerView;
|
||||
///回话
|
||||
@property (nonatomic,strong) SessionListViewController *sessionListVC;
|
||||
///好友
|
||||
@property (nonatomic,strong) XPMineFriendViewController *friendVC;
|
||||
///关注
|
||||
@property (nonatomic,strong) XPMineAttentionViewController *attentionVC;
|
||||
///粉丝
|
||||
@property (nonatomic,strong) XPMineFansViewController *fansVC;
|
||||
@end
|
||||
|
||||
@implementation XPMineContactViewController
|
||||
|
||||
- (BOOL)isHiddenNavBar {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self.view addSubview:self.titleView];
|
||||
[self.view addSubview:self.listContainerView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.titleView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.top.mas_equalTo(self.view);
|
||||
make.height.mas_equalTo(50);
|
||||
}];
|
||||
|
||||
[self.listContainerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.bottom.mas_equalTo(self.view);
|
||||
make.top.mas_equalTo(self.titleView.mas_bottom);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - JXCategoryListContainerViewDelegate
|
||||
- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView {
|
||||
return self.titles.count;
|
||||
}
|
||||
|
||||
// 根据下标 index 返回对应遵守并实现 `JXCategoryListContentViewDelegate` 协议的列表实例
|
||||
- (id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index {
|
||||
if (index == 0) {
|
||||
return self.sessionListVC;
|
||||
}else if (index == 1) {
|
||||
return self.friendVC;
|
||||
} else if(index == 2) {
|
||||
return self.fansVC;
|
||||
} else {
|
||||
return self.attentionVC;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (JXCategoryListContainerView *)listContainerView {
|
||||
if (!_listContainerView) {
|
||||
_listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self];
|
||||
_listContainerView.listCellBackgroundColor = [UIColor clearColor];
|
||||
}
|
||||
return _listContainerView;
|
||||
}
|
||||
|
||||
- (NSArray<NSString *> *)titles {
|
||||
if (!_titles) {
|
||||
_titles = @[@"消息", @"好友",@"粉丝", @"关注"];
|
||||
}
|
||||
return _titles;
|
||||
}
|
||||
|
||||
- (JXCategoryTitleView *)titleView {
|
||||
if (!_titleView) {
|
||||
_titleView = [[JXCategoryTitleView alloc] initWithFrame:CGRectZero];
|
||||
_titleView.backgroundColor =[UIColor clearColor];
|
||||
_titleView.titleColor = UIColorFromRGB(0x444444);
|
||||
_titleView.titleSelectedColor = [ThemeColor mainTextColor];
|
||||
_titleView.titleFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold];
|
||||
_titleView.titleSelectedFont = [UIFont systemFontOfSize:18 weight:UIFontWeightHeavy];
|
||||
_titleView.titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter;
|
||||
_titleView.contentScrollViewClickTransitionAnimationEnabled = NO;
|
||||
_titleView.averageCellSpacingEnabled = NO;
|
||||
_titleView.defaultSelectedIndex = 0;
|
||||
_titleView.titles = self.titles;
|
||||
_titleView.delegate = self;
|
||||
_titleView.cellSpacing = 0;
|
||||
_titleView.cellWidth = (CGFloat)KScreenWidth/ 4.0;
|
||||
_titleView.listContainer = self.listContainerView;
|
||||
|
||||
JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init];
|
||||
lineView.indicatorColor = [ThemeColor appMainColor];
|
||||
lineView.indicatorWidth = 8.f;
|
||||
lineView.indicatorHeight = 4.f;
|
||||
lineView.indicatorCornerRadius = 2.f;
|
||||
_titleView.indicators = @[lineView];
|
||||
}
|
||||
return _titleView;
|
||||
}
|
||||
|
||||
- (SessionListViewController *)sessionListVC {
|
||||
if (!_sessionListVC) {
|
||||
_sessionListVC = [[SessionListViewController alloc] initWithType:SessionListOpenTypeRoom];
|
||||
}
|
||||
return _sessionListVC;
|
||||
}
|
||||
|
||||
- (XPMineAttentionViewController *)attentionVC {
|
||||
if (!_attentionVC) {
|
||||
_attentionVC = [[XPMineAttentionViewController alloc] init];
|
||||
_attentionVC.isInRoom = YES;
|
||||
}
|
||||
return _attentionVC;
|
||||
}
|
||||
|
||||
- (XPMineFriendViewController *)friendVC {
|
||||
if (!_friendVC) {
|
||||
_friendVC = [[XPMineFriendViewController alloc] init];
|
||||
_friendVC.isInRoom = YES;
|
||||
}
|
||||
return _friendVC;
|
||||
}
|
||||
|
||||
- (XPMineFansViewController *)fansVC {
|
||||
if (!_fansVC) {
|
||||
_fansVC = [[XPMineFansViewController alloc] init];
|
||||
_fansVC.isInRoom = YES;
|
||||
}
|
||||
return _fansVC;
|
||||
}
|
||||
|
||||
@end
|
@@ -6,11 +6,12 @@
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineFansViewController : MvpViewController
|
||||
|
||||
@interface XPMineFansViewController : MvpViewController<JXCategoryListContentViewDelegate>
|
||||
///是否在房间内
|
||||
@property (nonatomic,assign) BOOL isInRoom;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#import <MJRefresh/MJRefresh.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "FansInfoModel.h"
|
||||
///View
|
||||
@@ -21,6 +22,7 @@
|
||||
#import "XPMineFansProtocol.h"
|
||||
///VC
|
||||
#import "XPMineUserInfoViewController.h"
|
||||
#import "SessionViewController.h"
|
||||
|
||||
@interface XPMineFansViewController ()<UITableViewDelegate,UITableViewDataSource, XPMineFansProtocol, XPMineFansTableViewCellDelegate>
|
||||
///列表
|
||||
@@ -35,6 +37,10 @@
|
||||
|
||||
@implementation XPMineFansViewController
|
||||
|
||||
- (BOOL)isHiddenNavBar {
|
||||
return self.isInRoom ? YES : NO;
|
||||
}
|
||||
|
||||
- (XPMineFansPresenter *)createPresenter {
|
||||
return [[XPMineFansPresenter alloc] init];
|
||||
}
|
||||
@@ -135,6 +141,10 @@
|
||||
return self.datasource.count > 0 ? self.datasource.count : 1;
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
return self.datasource.count > 0 ? 65 : self.isInRoom ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight);
|
||||
}
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (self.datasource.count > 0) {
|
||||
XPMineFansTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFansTableViewCell class])];
|
||||
@@ -142,7 +152,9 @@
|
||||
cell = [[XPMineFansTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFansTableViewCell class])];
|
||||
}
|
||||
cell.delegate = self;
|
||||
cell.fansInfo = [self.datasource objectAtIndex:indexPath.row];
|
||||
FansInfoModel * fansInfo = [self.datasource objectAtIndex:indexPath.row];
|
||||
fansInfo.isInRoom = self.isInRoom;
|
||||
cell.fansInfo = fansInfo;
|
||||
return cell;
|
||||
}
|
||||
|
||||
@@ -157,11 +169,23 @@
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
if (self.datasource.count > 0) {
|
||||
if (self.isInRoom) {
|
||||
FansInfoModel * fansInfoModel = [self.datasource objectAtIndex:indexPath.row];
|
||||
SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:fansInfoModel.uid type:NIMSessionTypeP2P]];
|
||||
sessionVC.openType = SessionListOpenTypeRoom;
|
||||
[self.navigationController pushViewController:sessionVC animated:YES];
|
||||
} else {
|
||||
XPMineUserInfoViewController * userInfoVC = [[XPMineUserInfoViewController alloc] init];
|
||||
FansInfoModel * fansInfoModel = [self.datasource objectAtIndex:indexPath.row];
|
||||
userInfoVC.uid = fansInfoModel.uid.integerValue;
|
||||
[self.navigationController pushViewController:userInfoVC animated:YES];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - JXCategoryListContentViewDelegate
|
||||
- (UIView *)listView {
|
||||
return self.view;
|
||||
}
|
||||
|
||||
#pragma mark - mark
|
||||
|
@@ -5,12 +5,13 @@
|
||||
// Created by 冯硕 on 2021/12/21.
|
||||
//
|
||||
|
||||
#import "BaseViewController.h"
|
||||
|
||||
#import "MvpViewController.h"
|
||||
#import <JXCategoryView/JXCategoryListContainerView.h>
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineFriendViewController : BaseViewController
|
||||
|
||||
@interface XPMineFriendViewController : MvpViewController<JXCategoryListContentViewDelegate>
|
||||
//是否在房间内
|
||||
@property (nonatomic,assign) BOOL isInRoom;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -12,11 +12,18 @@
|
||||
#import <NIMSDK/NIMSDK.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "UserInfoModel.h"
|
||||
///View
|
||||
#import "XPMineFriendEmptyTableViewCell.h"
|
||||
#import "XPMineFriendTableViewCell.h"
|
||||
#import "SessionViewController.h"
|
||||
///P
|
||||
#import "XPMineFriendPresenter.h"
|
||||
#import "XPMineFriendProtocol.h"
|
||||
|
||||
@interface XPMineFriendViewController ()<UITableViewDelegate,UITableViewDataSource>
|
||||
@interface XPMineFriendViewController ()<UITableViewDelegate,UITableViewDataSource, XPMineFriendProtocol>
|
||||
///列表
|
||||
@property (nonatomic,strong) UITableView *tableView;
|
||||
///数据源
|
||||
@@ -29,9 +36,23 @@
|
||||
|
||||
@implementation XPMineFriendViewController
|
||||
|
||||
- (__kindof id)createPresenter {
|
||||
return [[XPMineFriendPresenter alloc] init];
|
||||
}
|
||||
|
||||
- (BOOL)isHiddenNavBar {
|
||||
return self.isInRoom ? YES : NO;
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.datasource = [[NIMSDK sharedSDK].userManager myFriends];
|
||||
NSArray * array = [[NIMSDK sharedSDK].userManager myFriends];
|
||||
NSMutableArray * uids = [NSMutableArray array];
|
||||
for (int i = 0; i< array.count; i++) {
|
||||
NIMUser * user = [array objectAtIndex:i];
|
||||
[uids addObject:user.userId];
|
||||
}
|
||||
[self.presenter getUserListInfo:uids];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
@@ -50,12 +71,18 @@
|
||||
return self.datasource.count > 0 ? self.datasource.count : 1;
|
||||
}
|
||||
|
||||
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
return self.datasource.count > 0 ? 65 : self.isInRoom ? (KScreenHeight - kNavigationHeight) : (KScreenHeight - 200 - kNavigationHeight);
|
||||
}
|
||||
|
||||
|
||||
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (self.datasource.count > 0) {
|
||||
XPMineFriendTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineFriendTableViewCell class])];
|
||||
if (cell == nil) {
|
||||
cell = [[XPMineFriendTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineFriendTableViewCell class])];
|
||||
}
|
||||
cell.userInfo = [self.datasource objectAtIndex:indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
|
||||
@@ -69,6 +96,23 @@
|
||||
|
||||
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
if (self.datasource.count > 0) {
|
||||
UserInfoModel * userInfo = [self.datasource objectAtIndex:indexPath.row];
|
||||
SessionViewController * sessionVC = [[SessionViewController alloc] initWithSession:[NIMSession session:[NSString stringWithFormat:@"%ld", userInfo.uid] type:NIMSessionTypeP2P]];
|
||||
sessionVC.openType = SessionListOpenTypeRoom;
|
||||
[self.navigationController pushViewController:sessionVC animated:YES];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - XPMineFriendProtocol
|
||||
- (void)getUserListInfoSuccess:(NSArray *)list {
|
||||
self.datasource = list;
|
||||
[self.tableView reloadData];
|
||||
}
|
||||
|
||||
#pragma mark - JXCategoryListContentViewDelegate
|
||||
- (UIView *)listView {
|
||||
return self.view;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
|
16
xplan-ios/Main/Mine/View/Friend/XPRoomHalfMessageView.h
Normal file
16
xplan-ios/Main/Mine/View/Friend/XPRoomHalfMessageView.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPRoomHalfMessageView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/5/29.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPRoomHalfMessageView : UIView
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
73
xplan-ios/Main/Mine/View/Friend/XPRoomHalfMessageView.m
Normal file
73
xplan-ios/Main/Mine/View/Friend/XPRoomHalfMessageView.m
Normal file
@@ -0,0 +1,73 @@
|
||||
//
|
||||
// XPRoomHalfMessageView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/5/29.
|
||||
//
|
||||
|
||||
#import "XPRoomHalfMessageView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
#import "XPMacro.h"
|
||||
#import "BaseNavigationController.h"
|
||||
///View
|
||||
#import "XPMineContactViewController.h"
|
||||
|
||||
@interface XPRoomHalfMessageView ()
|
||||
///点击消失的View
|
||||
@property (nonatomic,strong) UIView *dismissView;
|
||||
///消息的容器
|
||||
@property (nonatomic,strong) UIWindow *messageWindow;
|
||||
@end
|
||||
|
||||
@implementation XPRoomHalfMessageView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.dismissView];
|
||||
[self addSubview:self.messageWindow];
|
||||
}
|
||||
|
||||
#pragma mark - Event Response
|
||||
- (void)dismissViewTap {
|
||||
[self removeFromSuperview];
|
||||
self.messageWindow.rootViewController = nil;
|
||||
self.messageWindow.windowLevel = -1;
|
||||
self.messageWindow = nil;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIView *)dismissView {
|
||||
if (!_dismissView) {
|
||||
_dismissView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 200)];
|
||||
_dismissView.backgroundColor = [UIColor clearColor];
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissViewTap)];
|
||||
[_dismissView addGestureRecognizer:tap];
|
||||
}
|
||||
return _dismissView;
|
||||
}
|
||||
|
||||
- (UIWindow *)messageWindow {
|
||||
if (!_messageWindow) {
|
||||
//创建测试导航器以及vc
|
||||
XPMineContactViewController * vc=[XPMineContactViewController new];
|
||||
BaseNavigationController * nav = [[BaseNavigationController alloc] initWithRootViewController:vc];
|
||||
//创建window,并将window的坐标设置在屏幕底部,设置windowLevel防止获取默认window失败
|
||||
UIWindow *testWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0, 200, KScreenWidth, KScreenHeight - 200)];
|
||||
testWindow.windowLevel = UIWindowLevelAlert;
|
||||
testWindow.backgroundColor = UIColor.redColor;
|
||||
testWindow.rootViewController = nav;
|
||||
testWindow.hidden = NO;
|
||||
_messageWindow = testWindow;
|
||||
}
|
||||
return _messageWindow;
|
||||
}
|
||||
@end
|
@@ -15,6 +15,7 @@
|
||||
#import "XCHudTool.h"
|
||||
#import "StatisticsServiceHelper.h"
|
||||
#import "Themecolor.h"
|
||||
#import "XPMacro.h"
|
||||
///Model
|
||||
#import "XPRoomMenuItem.h"
|
||||
#import "MicroQueueModel.h"
|
||||
@@ -29,6 +30,7 @@
|
||||
#import "XPRoomMoreMenuViewController.h"
|
||||
#import "XPNobleCenterViewController.h"
|
||||
#import "XPRoomFaceViewController.h"
|
||||
#import "XPRoomHalfMessageView.h"
|
||||
|
||||
@interface XPRoomMenuContainerView ()
|
||||
///滚动的容器
|
||||
@@ -55,6 +57,8 @@
|
||||
@property (nonatomic,strong) UIButton *nobleButton;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<RoomHostDelegate> delegate;
|
||||
///半屏的私聊弹框
|
||||
@property (nonatomic,strong) XPRoomHalfMessageView *halfMessageView;
|
||||
@end
|
||||
|
||||
|
||||
@@ -111,9 +115,17 @@
|
||||
[self.delegate.getCurrentNav presentViewController:giftView animated:YES completion:nil];
|
||||
}
|
||||
break;
|
||||
case XPRoomMenuItemType_Message: {
|
||||
SessionListViewController * sessionList = [[SessionListViewController alloc] initWithType:SessionListOpenTypeRoom];
|
||||
[self.delegate.getCurrentNav pushViewController:sessionList animated:YES];
|
||||
case XPRoomMenuItemType_Message:
|
||||
{
|
||||
XPRoomHalfMessageView *halfMessageView = [[XPRoomHalfMessageView alloc] init];
|
||||
halfMessageView.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight);
|
||||
[[UIApplication sharedApplication].delegate.window addSubview:halfMessageView];
|
||||
[UIView animateWithDuration:.35 animations:^{
|
||||
CGRect rect = halfMessageView.frame;
|
||||
rect.origin.y = 0;
|
||||
halfMessageView.frame = rect;
|
||||
}];
|
||||
|
||||
}
|
||||
break;
|
||||
case XPRoomMenuItemType_More: {
|
||||
@@ -487,4 +499,11 @@
|
||||
return _scrollView;
|
||||
}
|
||||
|
||||
- (XPRoomHalfMessageView *)halfMessageView {
|
||||
if (!_halfMessageView) {
|
||||
_halfMessageView = [[XPRoomHalfMessageView alloc] init];
|
||||
}
|
||||
return _halfMessageView;
|
||||
}
|
||||
|
||||
@end
|
||||
|
Reference in New Issue
Block a user