个人中心UI和逻辑
@@ -417,6 +417,9 @@
|
||||
E872308926E89BE000B90D4F /* LoginPhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E872308826E89BE000B90D4F /* LoginPhoneViewController.m */; };
|
||||
E872308D26E89DAA00B90D4F /* LoginInputView.m in Sources */ = {isa = PBXBuildFile; fileRef = E872308C26E89DAA00B90D4F /* LoginInputView.m */; };
|
||||
E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */ = {isa = PBXBuildFile; fileRef = E872309226E8D31500B90D4F /* LoginVerifCodeView.m */; };
|
||||
E873EB02280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB01280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m */; };
|
||||
E873EB05280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB04280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m */; };
|
||||
E873EB09280960990071030D /* XPMineUserInfoVoiceCardView.m in Sources */ = {isa = PBXBuildFile; fileRef = E873EB08280960990071030D /* XPMineUserInfoVoiceCardView.m */; };
|
||||
E874B88827215D39003954B9 /* MicroStateModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E874B88727215D39003954B9 /* MicroStateModel.m */; };
|
||||
E874B88B27215EAF003954B9 /* MicroQueueModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E874B88A27215EAF003954B9 /* MicroQueueModel.m */; };
|
||||
E875FA8727D619820086ED04 /* ClientDataModel.m in Sources */ = {isa = PBXBuildFile; fileRef = E875FA8627D619820086ED04 /* ClientDataModel.m */; };
|
||||
@@ -1542,6 +1545,13 @@
|
||||
E872308C26E89DAA00B90D4F /* LoginInputView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginInputView.m; sourceTree = "<group>"; };
|
||||
E872309126E8D31500B90D4F /* LoginVerifCodeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LoginVerifCodeView.h; sourceTree = "<group>"; };
|
||||
E872309226E8D31500B90D4F /* LoginVerifCodeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoginVerifCodeView.m; sourceTree = "<group>"; };
|
||||
E873EB00280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoEmptyCollectionViewCell.h; sourceTree = "<group>"; };
|
||||
E873EB01280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoEmptyCollectionViewCell.m; sourceTree = "<group>"; };
|
||||
E873EB03280943ED0071030D /* XPMineUserInfoGiftWallPresenter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallPresenter.h; sourceTree = "<group>"; };
|
||||
E873EB04280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoGiftWallPresenter.m; sourceTree = "<group>"; };
|
||||
E873EB06280944020071030D /* XPMineUserInfoGiftWallProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoGiftWallProtocol.h; sourceTree = "<group>"; };
|
||||
E873EB07280960990071030D /* XPMineUserInfoVoiceCardView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineUserInfoVoiceCardView.h; sourceTree = "<group>"; };
|
||||
E873EB08280960990071030D /* XPMineUserInfoVoiceCardView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineUserInfoVoiceCardView.m; sourceTree = "<group>"; };
|
||||
E874B88627215D39003954B9 /* MicroStateModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroStateModel.h; sourceTree = "<group>"; };
|
||||
E874B88727215D39003954B9 /* MicroStateModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MicroStateModel.m; sourceTree = "<group>"; };
|
||||
E874B88927215EAF003954B9 /* MicroQueueModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MicroQueueModel.h; sourceTree = "<group>"; };
|
||||
@@ -4674,6 +4684,8 @@
|
||||
E88B5CC426FB42B000DA9178 /* XPMineUserInfoHeaderView.m */,
|
||||
E8EEB91B26FC9D58007C6EBA /* XPMineUserInfoDateView.h */,
|
||||
E8EEB91C26FC9D58007C6EBA /* XPMineUserInfoDateView.m */,
|
||||
E873EB07280960990071030D /* XPMineUserInfoVoiceCardView.h */,
|
||||
E873EB08280960990071030D /* XPMineUserInfoVoiceCardView.m */,
|
||||
);
|
||||
path = MineInfo;
|
||||
sourceTree = "<group>";
|
||||
@@ -5710,6 +5722,8 @@
|
||||
E8EEB90026FC31B6007C6EBA /* XPMineUserInfoPresenter.m */,
|
||||
E8D34D5E28082BA5009C4835 /* XPMineUserDataPresenter.h */,
|
||||
E8D34D5F28082BA5009C4835 /* XPMineUserDataPresenter.m */,
|
||||
E873EB03280943ED0071030D /* XPMineUserInfoGiftWallPresenter.h */,
|
||||
E873EB04280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m */,
|
||||
E8EEB90D26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.h */,
|
||||
E8EEB90E26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m */,
|
||||
E8B846C326FDB41A00A777FE /* XPMineUserInfolbumPresenter.h */,
|
||||
@@ -5743,6 +5757,7 @@
|
||||
E88B5CB926FB327500DA9178 /* XPMineTeenagerPwdProtocol.h */,
|
||||
E8EEB90226FC31CE007C6EBA /* XPMineUserInfoProtocol.h */,
|
||||
E8D34D6128082BD4009C4835 /* XPMineUserDataProtocol.h */,
|
||||
E873EB06280944020071030D /* XPMineUserInfoGiftWallProtocol.h */,
|
||||
E8EEB91026FC6AD3007C6EBA /* XPMineUserInfoEditProtocol.h */,
|
||||
E8B846C626FDB44100A777FE /* XPMineUserInfoAlbumProtocol.h */,
|
||||
E8B846D726FDE16300A777FE /* XPMineRechargeProtocol.h */,
|
||||
@@ -5843,6 +5858,8 @@
|
||||
E8D34D5528080393009C4835 /* XPMineDataGiftCollectionViewCell.m */,
|
||||
E8D34D6528084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.h */,
|
||||
E8D34D6628084E88009C4835 /* XPMineUserInfoGiftWallCollectionViewCell.m */,
|
||||
E873EB00280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.h */,
|
||||
E873EB01280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m */,
|
||||
);
|
||||
path = MineInfo;
|
||||
sourceTree = "<group>";
|
||||
@@ -6450,6 +6467,7 @@
|
||||
E8D34D4728080295009C4835 /* XPMineUserDataViewController.m in Sources */,
|
||||
E801275127E3281100BAC3F2 /* XPRoomPKTimeTableViewCell.m in Sources */,
|
||||
E8EEB90F26FC6AB8007C6EBA /* XPMineUserInfoEditPresenter.m in Sources */,
|
||||
E873EB09280960990071030D /* XPMineUserInfoVoiceCardView.m in Sources */,
|
||||
E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */,
|
||||
18E7B33226F317A20064BC9B /* XPWebViewController.m in Sources */,
|
||||
E8AEAEF927141CA30017FCE0 /* RoomHeaderView.m in Sources */,
|
||||
@@ -6499,6 +6517,7 @@
|
||||
E8D34D532808037E009C4835 /* XPMineDataSkillDataCollectionViewCell.m in Sources */,
|
||||
E83DB47D2746372300D8CBD1 /* XPRoomGiftBannerView.m in Sources */,
|
||||
9BAA5FED277A1BBE007453F3 /* XPPrivacyViewController.m in Sources */,
|
||||
E873EB02280922720071030D /* XPMineUserInfoEmptyCollectionViewCell.m in Sources */,
|
||||
E872309326E8D31500B90D4F /* LoginVerifCodeView.m in Sources */,
|
||||
E87E91552796B6DE00A7B3F2 /* XPRoomInviteUserViewController.m in Sources */,
|
||||
E880B3B5278C1FE400A83B0D /* XPAcrossRoomPKPresenter.m in Sources */,
|
||||
@@ -6644,6 +6663,7 @@
|
||||
E855516728059692005F293F /* GuildIncomeDetailModel.m in Sources */,
|
||||
E89DA67227008D59008483C1 /* WalletInfoModel.m in Sources */,
|
||||
E8001632280409FD00D6D17A /* XPGuildPersonIncomeTableViewCell.m in Sources */,
|
||||
E873EB05280943ED0071030D /* XPMineUserInfoGiftWallPresenter.m in Sources */,
|
||||
E801274727E3241700BAC3F2 /* Api+RoomPK.m in Sources */,
|
||||
E85551642805937A005F293F /* XPGuildIncomeDetailCollectionViewCell.m in Sources */,
|
||||
E80CBDEA27D0C53F001E1EC2 /* XPWeakTimer.m in Sources */,
|
||||
|
22
xplan-ios/Assets.xcassets/Common/common_icon_beautiful.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "common_icon_beautiful@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "common_icon_beautiful@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Common/common_icon_beautiful.imageset/common_icon_beautiful@2x.png
vendored
Normal file
After Width: | Height: | Size: 1023 B |
BIN
xplan-ios/Assets.xcassets/Common/common_icon_beautiful.imageset/common_icon_beautiful@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.1 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_user_info_header_page_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_header_page_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_header_page_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 253 B |
After Width: | Height: | Size: 356 B |
22
xplan-ios/Assets.xcassets/Mine/mine_user_info_skill_card_voice_note.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_skill_card_voice_note@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_skill_card_voice_note@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 425 B |
After Width: | Height: | Size: 620 B |
22
xplan-ios/Assets.xcassets/Mine/mine_user_info_skill_card_voice_pause.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_skill_card_voice_pause@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_skill_card_voice_pause@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 552 B |
After Width: | Height: | Size: 1.0 KiB |
22
xplan-ios/Assets.xcassets/Mine/mine_user_info_skill_card_voice_play.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_skill_card_voice_play@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "mine_user_info_skill_card_voice_play@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 636 B |
After Width: | Height: | Size: 1.1 KiB |
@@ -16,6 +16,14 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// 获取家族相亲的信息
|
||||
/// @param uid 用户的uid
|
||||
- (void)getClanDetailInfo:(NSString *)uid;
|
||||
|
||||
/// 获取会长和当前用户家族详细的信息
|
||||
/// @param uid 用户的uid
|
||||
- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid;
|
||||
|
||||
/// 用户申请加入公会
|
||||
/// @param hallId 公会的id
|
||||
- (void)memberApplyHall:(NSString *)hallId;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -6,9 +6,11 @@
|
||||
//
|
||||
|
||||
#import "XPMineUserDataPresenter.h"
|
||||
#import <ReactiveObjC/ReactiveObjC.h>
|
||||
#import "Api+SkillCard.h"
|
||||
#import "Api+Guild.h"
|
||||
#import "ClanDetailInfoModel.h"
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "MineSkillCardListInfoModel.h"
|
||||
#import "XPMineUserDataProtocol.h"
|
||||
|
||||
@@ -22,12 +24,46 @@
|
||||
}] uid:uid];
|
||||
}
|
||||
|
||||
/// 获取家族相亲的信息
|
||||
/// 获取会长和当前用户家族详细的信息
|
||||
/// @param uid 用户的uid
|
||||
- (void)getClanDetailInfo:(NSString *)uid {
|
||||
- (void)getClanDetailInfo:(NSString *)uid currentUserUid:(NSString *)currentUserUid {
|
||||
RACSubject* owner = [RACSubject subject];
|
||||
RACSubject* currentUser = [RACSubject subject];
|
||||
|
||||
[[RACSignal combineLatest:@[owner, currentUser] reduce:^id(ClanDetailInfoModel* ownerClanInfo, ClanDetailInfoModel* currentUserClanInfo){
|
||||
[[self getView] getClanDetailInfoSuccess:ownerClanInfo currentUserClanInfo:currentUserClanInfo];
|
||||
return nil;
|
||||
}] subscribeError:^(NSError * _Nullable error) {
|
||||
|
||||
}];
|
||||
|
||||
[Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data];
|
||||
[[self getView] getClanDetailInfoSuccess:clanDetailInfo];
|
||||
[currentUser sendNext:clanDetailInfo];
|
||||
[currentUser sendCompleted];
|
||||
}fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[currentUser sendNext:nil];
|
||||
[currentUser sendCompleted];
|
||||
}] uid:currentUserUid];
|
||||
|
||||
[Api getClanDetailInfo:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
ClanDetailInfoModel * clanDetailInfo = [ClanDetailInfoModel modelWithDictionary:data.data];
|
||||
[owner sendNext:clanDetailInfo];
|
||||
[owner sendCompleted];
|
||||
}fail:^(NSInteger code, NSString * _Nullable msg) {
|
||||
[owner sendNext:nil];
|
||||
[owner sendCompleted];
|
||||
}] uid:uid];
|
||||
}
|
||||
|
||||
|
||||
/// 用户申请加入公会
|
||||
/// @param hallId 公会的id
|
||||
- (void)memberApplyHall:(NSString *)hallId {
|
||||
NSString * uid = [AccountInfoStorage instance].getUid;
|
||||
[Api memberApplyHall:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
[[self getView] memberApplyHallSuccess];
|
||||
} showLoading:YES] hallId:hallId uid:uid];
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPMineUserInfoGiftWallPresenter.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/4/15.
|
||||
//
|
||||
|
||||
#import "BaseMvpPresenter.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineUserInfoGiftWallPresenter : BaseMvpPresenter
|
||||
- (void)getUserGiftWall:(NSString *)uid;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// XPMineUserInfoGiftWallPresenter.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/4/15.
|
||||
//
|
||||
|
||||
#import "XPMineUserInfoGiftWallPresenter.h"
|
||||
#import "Api+Mine.h"
|
||||
#import "XPMineUserInfoGiftWallProtocol.h"
|
||||
#import "UserGiftWallInfoModel.h"
|
||||
|
||||
@implementation XPMineUserInfoGiftWallPresenter
|
||||
|
||||
- (void)getUserGiftWall:(NSString *)uid {
|
||||
[Api getUserGiftWall:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
|
||||
NSArray * array= [UserGiftWallInfoModel modelsWithArray:data.data];
|
||||
[[self getView] getUserGiftWallSuccess:array];
|
||||
}] uid:uid orderType:@"2"];
|
||||
}
|
||||
|
||||
@end
|
@@ -12,8 +12,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol XPMineUserDataProtocol <NSObject>
|
||||
///获取用户的技能卡成功
|
||||
- (void)getUserSkillCardListSuccess:(NSArray *)list;
|
||||
///获取家族信息成功
|
||||
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo;
|
||||
///获取家族详情成功
|
||||
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo;
|
||||
///申请加入工会成功
|
||||
- (void)memberApplyHallSuccess;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// XPMineUserInfoGiftWallProtocol.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/4/15.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@protocol XPMineUserInfoGiftWallProtocol <NSObject>
|
||||
|
||||
///获取礼物墙成功
|
||||
- (void)getUserGiftWallSuccess:(NSArray *)giftList;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -14,8 +14,15 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickFold:(UIButton *)sender;
|
||||
///点击了加入公会
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickEnter:(ClanDetailInfoModel *)clanInfo;
|
||||
///点击了公会
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickClanView:(ClanDetailInfoModel *)clanInfo;
|
||||
///点击了工会房间
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickHallView:(ClanDetailInfoModel *)clanInfo;
|
||||
@end
|
||||
@interface XPMineDataClanTableViewCell : UITableViewCell
|
||||
///是否展示加入工会
|
||||
@property (nonatomic,assign) BOOL isShowEnterHall;
|
||||
|
||||
@property (nonatomic,strong) ClanDetailInfoModel *clanInfo;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPMineDataClanTableViewCellDelegate> delegate;
|
||||
|
@@ -16,7 +16,7 @@
|
||||
|
||||
@interface XPMineDataClanTableViewCell ()
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImageView;
|
||||
@property (nonatomic,strong) UIView *backView;
|
||||
///显示标题
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
///容器
|
||||
@@ -60,9 +60,9 @@
|
||||
self.isfold = YES;
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
[self.contentView addSubview:self.backImageView];
|
||||
[self.backImageView addSubview:self.titleLabel];
|
||||
[self.backImageView addSubview:self.stackView];
|
||||
[self.contentView addSubview:self.backView];
|
||||
[self.backView addSubview:self.titleLabel];
|
||||
[self.backView addSubview:self.stackView];
|
||||
[self.stackView addArrangedSubview:self.clanView];
|
||||
[self.stackView addArrangedSubview:self.hallView];
|
||||
|
||||
@@ -79,21 +79,21 @@
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
[self.backView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.contentView).inset(15);
|
||||
make.top.mas_equalTo(self.contentView);
|
||||
make.bottom.mas_equalTo(self.contentView).offset(-15);
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.backImageView).offset(12);
|
||||
make.top.mas_equalTo(self.backImageView).offset(10);
|
||||
make.left.mas_equalTo(self.backView).offset(12);
|
||||
make.top.mas_equalTo(self.backView).offset(10);
|
||||
}];
|
||||
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.backImageView).offset(10);
|
||||
make.left.mas_equalTo(self.backView).offset(10);
|
||||
make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(5);
|
||||
make.right.mas_equalTo(self.backImageView).offset(-10);
|
||||
make.right.mas_equalTo(self.backView).offset(-10);
|
||||
}];
|
||||
|
||||
[self.clanView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
@@ -117,7 +117,7 @@
|
||||
}];
|
||||
|
||||
[self.foldButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(16, 8));
|
||||
make.size.mas_equalTo(CGSizeMake(13, 22));
|
||||
make.right.mas_equalTo(self.clanView);
|
||||
make.centerY.mas_equalTo(self.clanView);
|
||||
}];
|
||||
@@ -159,21 +159,53 @@
|
||||
}
|
||||
|
||||
- (void)foldButtonAction:(UIButton *)sender{
|
||||
sender.selected = !sender.selected;
|
||||
self.hallView.hidden = !self.hallView.hidden;
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
if (self.foldButton.selected) {
|
||||
self.foldButton.transform = CGAffineTransformIdentity;
|
||||
} else {
|
||||
self.foldButton.transform = CGAffineTransformMakeRotation(M_PI / 2);
|
||||
}
|
||||
}];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickFold:)]) {
|
||||
[self.delegate xPMineDataClanTableViewCell:self didClickFold:sender];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)didTapClanView {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickClanView:)]) {
|
||||
[self.delegate xPMineDataClanTableViewCell:self didClickClanView:self.clanInfo];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)didTapHallView {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineDataClanTableViewCell:didClickHallView:)]) {
|
||||
[self.delegate xPMineDataClanTableViewCell:self didClickHallView:self.clanInfo];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setClanInfo:(ClanDetailInfoModel *)clanInfo {
|
||||
_clanInfo = clanInfo;
|
||||
if (_clanInfo) {
|
||||
self.clanView.hidden = _clanInfo.clan.elderUid.length <= 0;
|
||||
if (self.isfold) {
|
||||
self.hallView.hidden = YES;
|
||||
if (self.clanInfo.clan.elderUid.length > 0) {
|
||||
if (self.clanInfo.hall.ownerUid.length > 0) {
|
||||
self.clanView.hidden = NO;
|
||||
self.hallView.hidden = self.isfold ? YES : NO;
|
||||
} else {
|
||||
self.hallView.hidden = _clanInfo.hall.ownerUid.length <= 0;
|
||||
self.clanView.hidden = NO;
|
||||
self.hallView.hidden = YES;
|
||||
}
|
||||
} else {
|
||||
if (self.clanInfo.hall.ownerUid.length > 0) {
|
||||
self.clanView.hidden = YES;
|
||||
self.hallView.hidden = NO;
|
||||
} else {
|
||||
self.clanView.hidden = YES;
|
||||
self.hallView.hidden = YES;
|
||||
}
|
||||
}
|
||||
self.clanImageView.imageUrl = _clanInfo.clan.avatar;
|
||||
self.clanNickLabel.text = _clanInfo.clan.name;
|
||||
@@ -183,17 +215,23 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (UIImageView *)backImageView {
|
||||
if (!_backImageView) {
|
||||
_backImageView = [[UIImageView alloc] init];
|
||||
_backImageView.userInteractionEnabled = YES;
|
||||
_backImageView.layer.cornerRadius = 10;
|
||||
_backImageView.backgroundColor =[ThemeColor appCellBackgroundColor];
|
||||
_backImageView.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor;
|
||||
_backImageView.layer.shadowOffset = CGSizeMake(0, 2);
|
||||
_backImageView.layer.shadowRadius = 8;
|
||||
|
||||
- (void)setIsShowEnterHall:(BOOL)isShowEnterHall {
|
||||
_isShowEnterHall = isShowEnterHall;
|
||||
self.enterButton.hidden = !_isShowEnterHall;
|
||||
}
|
||||
return _backImageView;
|
||||
|
||||
- (UIView *)backView {
|
||||
if (!_backView) {
|
||||
_backView = [[UIView alloc] init];
|
||||
_backView.userInteractionEnabled = YES;
|
||||
_backView.layer.cornerRadius = 10;
|
||||
_backView.backgroundColor =[ThemeColor appCellBackgroundColor];
|
||||
_backView.layer.shadowColor = UIColorFromRGB(0xE4E4E4).CGColor;
|
||||
_backView.layer.shadowOffset = CGSizeMake(0, 2);
|
||||
_backView.layer.shadowRadius = 8;
|
||||
}
|
||||
return _backView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
@@ -233,6 +271,9 @@
|
||||
_clanImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_clanImageView.layer.masksToBounds = YES;
|
||||
_clanImageView.layer.cornerRadius = 8;
|
||||
_clanImageView.userInteractionEnabled = YES;
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapClanView)];
|
||||
[_clanImageView addGestureRecognizer:tap];
|
||||
}
|
||||
return _clanImageView;
|
||||
}
|
||||
@@ -258,9 +299,10 @@
|
||||
- (UIButton *)foldButton {
|
||||
if (!_foldButton) {
|
||||
_foldButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_foldButton setImage:[UIImage imageNamed:@"icon_unattention"] forState:UIControlStateNormal];
|
||||
[_foldButton setImage:[UIImage imageNamed:@"icon_small_attention"] forState:UIControlStateSelected];
|
||||
[_foldButton setImage:[UIImage imageNamed:@"common_right_arrow"] forState:UIControlStateNormal];
|
||||
[_foldButton setImage:[UIImage imageNamed:@"common_right_arrow"] forState:UIControlStateSelected];
|
||||
[_foldButton addTarget:self action:@selector(foldButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
_foldButton.transform = CGAffineTransformMakeRotation(M_PI / 2);
|
||||
}
|
||||
return _foldButton;
|
||||
}
|
||||
@@ -290,6 +332,9 @@
|
||||
_hallImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_hallImageView.layer.masksToBounds = YES;
|
||||
_hallImageView.layer.cornerRadius = 8;
|
||||
_hallImageView.userInteractionEnabled = YES;
|
||||
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapHallView)];
|
||||
[_hallImageView addGestureRecognizer:tap];
|
||||
}
|
||||
return _hallImageView;
|
||||
}
|
||||
|
@@ -20,6 +20,8 @@
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
///列表
|
||||
@property (nonatomic,strong) UICollectionView *collectionView;
|
||||
///为空
|
||||
@property (nonatomic,strong) UILabel *emptyLabel;
|
||||
@end
|
||||
|
||||
@implementation XPMineDataSkillCardTableViewCell
|
||||
@@ -40,6 +42,7 @@
|
||||
|
||||
[self.backImageView addSubview:self.titleLabel];
|
||||
[self.backImageView addSubview:self.collectionView];
|
||||
[self.backImageView addSubview:self.emptyLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -60,6 +63,12 @@
|
||||
make.height.mas_equalTo(47);
|
||||
make.right.mas_equalTo(self.backImageView).offset(-6);
|
||||
}];
|
||||
|
||||
[self.emptyLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.backImageView).inset(10);
|
||||
make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(12);
|
||||
make.height.mas_equalTo(47);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource
|
||||
@@ -86,6 +95,13 @@
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setDatasourece:(NSArray *)datasourece {
|
||||
_datasourece = datasourece;
|
||||
if (_datasourece.count > 0) {
|
||||
self.emptyLabel.hidden = YES;
|
||||
self.collectionView.hidden = NO;
|
||||
} else {
|
||||
self.emptyLabel.hidden = NO;
|
||||
self.collectionView.hidden = YES;
|
||||
}
|
||||
[self.collectionView reloadData];
|
||||
}
|
||||
|
||||
@@ -123,13 +139,28 @@
|
||||
layout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);
|
||||
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||
_collectionView.dataSource = self;
|
||||
_collectionView.showsHorizontalScrollIndicator = NO;
|
||||
_collectionView.delegate = self;
|
||||
_collectionView.tag = 1005;
|
||||
_collectionView.backgroundColor = [UIColor clearColor];
|
||||
[_collectionView registerClass:[XPMineDataSkillDataCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineDataSkillDataCollectionViewCell class])];
|
||||
|
||||
}
|
||||
return _collectionView;
|
||||
}
|
||||
- (UILabel *)emptyLabel {
|
||||
if (!_emptyLabel) {
|
||||
_emptyLabel = [[UILabel alloc] init];
|
||||
_emptyLabel.text = @"还未添加技能卡喔";
|
||||
_emptyLabel.font = [UIFont systemFontOfSize:10];
|
||||
_emptyLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_emptyLabel.backgroundColor = UIColorFromRGB(0xF4F7FF);
|
||||
_emptyLabel.layer.masksToBounds = YES;
|
||||
_emptyLabel.layer.cornerRadius = 8;
|
||||
_emptyLabel.textColor = [ThemeColor secondTextColor];
|
||||
}
|
||||
return _emptyLabel;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
@@ -69,6 +69,27 @@
|
||||
make.top.mas_equalTo(self.logoImageView.mas_centerY).offset(2);
|
||||
}];
|
||||
}
|
||||
- (UIColor *)getSkillCardBackColor:(NSString *)cardId {
|
||||
UIColor * color = UIColorFromRGB(0xFEF5E8);
|
||||
if ([cardId isEqualToString:@"1"]) {
|
||||
color = UIColorFromRGB(0xEEF2FF);
|
||||
} else if([cardId isEqualToString:@"2"]) {
|
||||
color = UIColorFromRGB(0xFEF5E8);
|
||||
}else if([cardId isEqualToString:@"3"]) {
|
||||
color = UIColorFromRGB(0xF2FFE0);
|
||||
}else if([cardId isEqualToString:@"4"]) {
|
||||
color = UIColorFromRGB(0xE9FFF4);
|
||||
}else if([cardId isEqualToString:@"5"]) {
|
||||
color = UIColorFromRGB(0xFFE7EF);
|
||||
}else if([cardId isEqualToString:@"6"]) {
|
||||
color = UIColorFromRGB(0xF9ECFF);
|
||||
}else if([cardId isEqualToString:@"7"]) {
|
||||
color = UIColorFromRGB(0xFFE4FB);
|
||||
}else if([cardId isEqualToString:@"9"]) {
|
||||
color = UIColorFromRGB(0xF7EFDB);
|
||||
}
|
||||
return color;
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setSkillInfo:(MineSkillCardListInfoModel *)skillInfo {
|
||||
@@ -78,6 +99,7 @@
|
||||
NSString * title = [_skillInfo.propVals componentsJoinedByString:@"/"];
|
||||
self.skillLabel.text = title;
|
||||
self.titleLabel.text = _skillInfo.name;
|
||||
self.backView.backgroundColor = [self getSkillCardBackColor:skillInfo.cardId];
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPMineUserInfoEmptyCollectionViewCell.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/4/15.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineUserInfoEmptyCollectionViewCell : UICollectionViewCell
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,72 @@
|
||||
//
|
||||
// XPMineUserInfoEmptyCollectionViewCell.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/4/15.
|
||||
//
|
||||
|
||||
#import "XPMineUserInfoEmptyCollectionViewCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "UIImageConstant.h"
|
||||
|
||||
@interface XPMineUserInfoEmptyCollectionViewCell ()
|
||||
@property (nonatomic,strong) UIImageView *emptyImageView;
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
@end
|
||||
|
||||
@implementation XPMineUserInfoEmptyCollectionViewCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self.contentView addSubview:self.emptyImageView];
|
||||
[self.contentView addSubview:self.titleLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.emptyImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(self.contentView).offset(150);
|
||||
make.size.mas_equalTo(CGSizeMake(100, 100));
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.emptyImageView.mas_bottom).offset(20);
|
||||
make.left.right.mas_equalTo(self.contentView);
|
||||
}];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIImageView *)emptyImageView {
|
||||
if (!_emptyImageView) {
|
||||
_emptyImageView = [[UIImageView alloc] init];
|
||||
_emptyImageView.userInteractionEnabled = YES;
|
||||
_emptyImageView.image = [UIImageConstant defalutEmptyPlaceholder];
|
||||
_emptyImageView.layer.masksToBounds = YES;
|
||||
_emptyImageView.contentMode = UIViewContentModeScaleAspectFit;
|
||||
}
|
||||
return _emptyImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.text = @"还未收到过礼物";
|
||||
_titleLabel.font = [UIFont systemFontOfSize:16];
|
||||
_titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_titleLabel.textColor = [ThemeColor secondTextColor];
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
@end
|
@@ -8,9 +8,9 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class UserGiftWallInfoModel;
|
||||
@interface XPMineUserInfoGiftWallCollectionViewCell : UICollectionViewCell
|
||||
|
||||
@property (nonatomic,strong) UserGiftWallInfoModel *giftInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -8,7 +8,150 @@
|
||||
#import "XPMineUserInfoGiftWallCollectionViewCell.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "NetImageView.h"
|
||||
///Model
|
||||
#import "UserGiftWallInfoModel.h"
|
||||
|
||||
@interface XPMineUserInfoGiftWallCollectionViewCell ()
|
||||
///礼物的图片
|
||||
@property (nonatomic,strong) NetImageView *giftImageView;
|
||||
///礼物的数量
|
||||
@property (nonatomic,strong) UIButton *numberButton;
|
||||
///礼物的名
|
||||
@property (nonatomic,strong) UILabel *giftNameLabel;
|
||||
///礼物的价值容器
|
||||
@property (nonatomic,strong) UIStackView *stackView;
|
||||
///钻石
|
||||
@property (nonatomic,strong) UIImageView *diamondImageView;
|
||||
///价格
|
||||
@property (nonatomic,strong) UILabel *giftPriceLabel;
|
||||
@end
|
||||
|
||||
@implementation XPMineUserInfoGiftWallCollectionViewCell
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self.contentView addSubview:self.giftImageView];
|
||||
[self.contentView addSubview:self.numberButton];
|
||||
[self.contentView addSubview:self.giftNameLabel];
|
||||
[self.contentView addSubview:self.stackView];
|
||||
|
||||
[self.stackView addArrangedSubview:self.diamondImageView];
|
||||
[self.stackView addArrangedSubview:self.giftPriceLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.giftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.contentView).inset(5);
|
||||
make.top.mas_equalTo(self.contentView);
|
||||
make.height.mas_equalTo(self.giftImageView.mas_width);
|
||||
}];
|
||||
|
||||
[self.numberButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(55, 15));
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(self.giftImageView.mas_bottom).offset(2);
|
||||
}];
|
||||
|
||||
[self.giftNameLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(self.numberButton.mas_bottom).offset(10);
|
||||
}];
|
||||
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self.contentView);
|
||||
make.top.mas_equalTo(self.giftNameLabel.mas_bottom).offset(3);
|
||||
}];
|
||||
|
||||
[self.diamondImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(13, 13));
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setGiftInfo:(UserGiftWallInfoModel *)giftInfo {
|
||||
_giftInfo = giftInfo;
|
||||
if (_giftInfo) {
|
||||
self.giftImageView.imageUrl = _giftInfo.picUrl;
|
||||
self.giftNameLabel.text = _giftInfo.giftName;
|
||||
self.giftPriceLabel.text = [NSString stringWithFormat:@"%ld", _giftInfo.giftPrice];
|
||||
[self.numberButton setTitle:[NSString stringWithFormat:@"%ld", _giftInfo.reciveCount] forState:UIControlStateNormal];
|
||||
}
|
||||
}
|
||||
|
||||
- (NetImageView *)giftImageView {
|
||||
if (!_giftImageView) {
|
||||
NetImageConfig * config = [[NetImageConfig alloc]init];
|
||||
config.imageType = ImageTypeUserIcon;
|
||||
config.placeHolder = [UIImageConstant defaultAvatarPlaceholder];
|
||||
_giftImageView = [[NetImageView alloc] initWithConfig:config];
|
||||
_giftImageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
_giftImageView.layer.masksToBounds = YES;
|
||||
}
|
||||
return _giftImageView;
|
||||
}
|
||||
|
||||
- (UIButton *)numberButton {
|
||||
if (!_numberButton) {
|
||||
_numberButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_numberButton setBackgroundColor:UIColorRGBAlpha(0xFFC000, 0.2)];
|
||||
[_numberButton setTitleColor:[ThemeColor appMainColor] forState:UIControlStateNormal];
|
||||
_numberButton.titleLabel.font = [UIFont systemFontOfSize:10];
|
||||
_numberButton.layer.masksToBounds = YES;
|
||||
_numberButton.layer.cornerRadius = 15 / 2;
|
||||
}
|
||||
return _numberButton;
|
||||
}
|
||||
|
||||
- (UILabel *)giftNameLabel {
|
||||
if (!_giftNameLabel) {
|
||||
_giftNameLabel = [[UILabel alloc] init];
|
||||
_giftNameLabel.font = [UIFont systemFontOfSize:13];
|
||||
_giftNameLabel.textColor = [ThemeColor mainTextColor];
|
||||
_giftNameLabel.textAlignment = NSTextAlignmentCenter;
|
||||
}
|
||||
return _giftNameLabel;
|
||||
}
|
||||
|
||||
- (UIStackView *)stackView {
|
||||
if (!_stackView) {
|
||||
_stackView = [[UIStackView alloc] init];
|
||||
_stackView.axis = UILayoutConstraintAxisHorizontal;
|
||||
_stackView.distribution = UIStackViewDistributionFill;
|
||||
_stackView.alignment = UIStackViewAlignmentFill;
|
||||
_stackView.spacing = 3;
|
||||
}
|
||||
return _stackView;
|
||||
}
|
||||
|
||||
- (UIImageView *)diamondImageView {
|
||||
if (!_diamondImageView) {
|
||||
_diamondImageView = [[UIImageView alloc] init];
|
||||
_diamondImageView.userInteractionEnabled = YES;
|
||||
_diamondImageView.image = [UIImage imageNamed:@"common_diamond"];
|
||||
}
|
||||
return _diamondImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)giftPriceLabel {
|
||||
if (!_giftPriceLabel) {
|
||||
_giftPriceLabel = [[UILabel alloc] init];
|
||||
_giftPriceLabel.font = [UIFont systemFontOfSize:11];
|
||||
_giftPriceLabel.textColor = [ThemeColor secondTextColor];
|
||||
}
|
||||
return _giftPriceLabel;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
@@ -116,6 +116,12 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// @param uid 自己的UID
|
||||
+ (void)quitGuildRoom:(HttpRequestHelperCompletion)completion uid:(NSString *)uid;
|
||||
|
||||
/// 申请加入公会房间
|
||||
/// @param completion 完成
|
||||
/// @param hallId 公会的id
|
||||
/// @param uid 要加入用户的uid
|
||||
+ (void)memberApplyHall:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid;
|
||||
|
||||
/// 家族收入列表
|
||||
/// @param completion 完成
|
||||
/// @param uid 用户的uid
|
||||
|
@@ -146,6 +146,15 @@
|
||||
[self makeRequest:@"hall/quit" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, uid, nil];
|
||||
}
|
||||
|
||||
|
||||
/// 申请加入公会房间
|
||||
/// @param completion 完成
|
||||
/// @param hallId 公会的id
|
||||
/// @param uid 要加入用户的uid
|
||||
+ (void)memberApplyHall:(HttpRequestHelperCompletion)completion hallId:(NSString *)hallId uid:(NSString *)uid {
|
||||
[self makeRequest:@"hall/apply" method:HttpRequestHelperMethodPOST completion:completion,__FUNCTION__, hallId, uid, nil];
|
||||
}
|
||||
|
||||
#pragma mark - 收入统计
|
||||
|
||||
/// 家族收入列表
|
||||
|
@@ -63,9 +63,6 @@
|
||||
[owner sendNext:nil];
|
||||
[owner sendCompleted];
|
||||
}] uid:uid];
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// 获取当前房间操作的权限
|
||||
|
@@ -8,11 +8,19 @@
|
||||
#import "MvpViewController.h"
|
||||
#import <JXPagingView/JXPagerView.h>
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class UserInfoModel;
|
||||
@class UserInfoModel, MineSkillCardListInfoModel, XPMineUserDataViewController;
|
||||
@protocol XPMineUserDataViewControllerDelegate <NSObject>
|
||||
|
||||
///请求技能卡中有声音的技能
|
||||
- (void)xPMineUserDataViewController:(XPMineUserDataViewController *)viewController didGetVoiceSuccess:(MineSkillCardListInfoModel *)voiceCard;
|
||||
|
||||
@end
|
||||
@interface XPMineUserDataViewController : MvpViewController<JXPagerViewListViewDelegate>
|
||||
@property (nonatomic,copy) NSString *userUid;
|
||||
///用户信息
|
||||
@property (nonatomic,strong) UserInfoModel *userInfo;
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPMineUserDataViewControllerDelegate> delegate;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -8,6 +8,8 @@
|
||||
#import "XPMineUserDataViewController.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "AccountInfoStorage.h"
|
||||
///View
|
||||
#import "XPMineDataSkillCardTableViewCell.h"
|
||||
#import "XPMineDataClanTableViewCell.h"
|
||||
@@ -15,11 +17,15 @@
|
||||
///Model
|
||||
#import "ClanDetailInfoModel.h"
|
||||
#import "UserInfoModel.h"
|
||||
#import "MineSkillCardListInfoModel.h"
|
||||
///P
|
||||
#import "XPMineUserDataPresenter.h"
|
||||
#import "XPMineUserDataProtocol.h"
|
||||
///View
|
||||
#import "XPSkillCardViewController.h"
|
||||
#import "XPMineUserInfoGiftWallViewController.h"
|
||||
#import "XPMineClanViewController.h"
|
||||
#import "XPMineGuildViewController.h"
|
||||
@interface XPMineUserDataViewController ()<XPMineUserDataProtocol, UITableViewDelegate, UITableViewDataSource, XPMineDataClanTableViewCellDelegate, XPMineDataGiftTableViewCellDelegate, XPMineDataSkillCardTableViewCellDelegate>
|
||||
///列表
|
||||
@property (nonatomic,strong) UITableView *tableView;
|
||||
@@ -30,6 +36,8 @@
|
||||
///是否折叠
|
||||
@property (nonatomic,assign) BOOL isFold;
|
||||
@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView);
|
||||
///是否展示加入家族房间
|
||||
@property (nonatomic,assign) BOOL isShowEnterClan;
|
||||
@end
|
||||
|
||||
@implementation XPMineUserDataViewController
|
||||
@@ -51,8 +59,9 @@
|
||||
#pragma mark - Http
|
||||
- (void)initHettpRequest {
|
||||
self.isFold = YES;
|
||||
self.isShowEnterClan = NO;
|
||||
[self.presenter getUserSkillCardList:self.userUid];
|
||||
[self.presenter getClanDetailInfo:self.userUid];
|
||||
[self.presenter getClanDetailInfo:self.userUid currentUserUid:[AccountInfoStorage instance].getUid];
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
@@ -84,14 +93,19 @@
|
||||
if (indexPath.section == 0) {
|
||||
return 115;
|
||||
} else if(indexPath.section == 1) {
|
||||
CGFloat itemHeigh = 40 + 15;
|
||||
if (self.clanDetailInfo.clan.elderUid.length > 0) {
|
||||
if (self.clanDetailInfo.hall.ownerUid.length > 0) {
|
||||
return self.isFold ? 115 : (115 + 60);
|
||||
return self.isFold ? (itemHeigh + 68) : (itemHeigh + 68 + 60);
|
||||
}else {
|
||||
return 115;
|
||||
return (itemHeigh + 60);
|
||||
}
|
||||
}else {
|
||||
return 75;
|
||||
if (self.clanDetailInfo.hall.ownerUid.length > 0) {
|
||||
return (itemHeigh + 60);
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (self.userInfo.userGiftWall.count > 0) {
|
||||
@@ -123,11 +137,11 @@
|
||||
cell.datasourece = self.skillArray;
|
||||
return cell;
|
||||
} else if(indexPath.section == 1) {
|
||||
|
||||
XPMineDataClanTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])];
|
||||
if (cell == nil) {
|
||||
cell = [[XPMineDataClanTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPMineDataClanTableViewCell class])];
|
||||
}
|
||||
cell.isShowEnterHall = self.isShowEnterClan;
|
||||
cell.delegate = self;
|
||||
cell.clanInfo = self.clanDetailInfo;
|
||||
return cell;
|
||||
@@ -144,17 +158,32 @@
|
||||
|
||||
#pragma mark - XPMineDataClanTableViewCellDelegate
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickFold:(UIButton *)sender {
|
||||
self.isFold = sender.selected;
|
||||
self.isFold = !sender.selected;
|
||||
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
|
||||
}
|
||||
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickEnter:(ClanDetailInfoModel *)clanInfo {
|
||||
//TODO: 加入工会
|
||||
[self.presenter memberApplyHall:clanInfo.hall.hallId];
|
||||
}
|
||||
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickClanView:(ClanDetailInfoModel *)clanInfo {
|
||||
XPMineClanViewController * clanVC = [[XPMineClanViewController alloc] init];
|
||||
clanVC.uid = self.clanDetailInfo.clan.elderUid;
|
||||
[self.navigationController pushViewController:clanVC animated:YES];
|
||||
}
|
||||
|
||||
- (void)xPMineDataClanTableViewCell:(XPMineDataClanTableViewCell *)view didClickHallView:(ClanDetailInfoModel *)clanInfo {
|
||||
XPMineGuildViewController * hallVC = [[XPMineGuildViewController alloc] init];
|
||||
hallVC.ownerUid = clanInfo.hall.ownerUid;
|
||||
hallVC.guildId = clanInfo.hall.hallId;
|
||||
[self.navigationController pushViewController:hallVC animated:YES];
|
||||
}
|
||||
|
||||
#pragma mark - XPMineDataGiftTableViewCellDelegate
|
||||
- (void)xPMineDataGiftTableViewCell:(XPMineDataGiftTableViewCell *)view didClickMore:(UIButton *)sender {
|
||||
//TODO: 查看更多礼物墙
|
||||
XPMineUserInfoGiftWallViewController * giftWallVC = [[XPMineUserInfoGiftWallViewController alloc] init];
|
||||
giftWallVC.userUid = self.userUid;
|
||||
[self.navigationController pushViewController:giftWallVC animated:YES];
|
||||
}
|
||||
|
||||
#pragma mark - XPMineDataSkillCardTableViewCell
|
||||
@@ -183,15 +212,38 @@
|
||||
|
||||
#pragma mark - XPMineUserDataProtocol
|
||||
- (void)getUserSkillCardListSuccess:(NSArray *)list {
|
||||
self.skillArray = list;
|
||||
NSMutableArray<MineSkillCardListInfoModel *> * array = [NSMutableArray arrayWithArray:list];
|
||||
__block MineSkillCardListInfoModel * voiceCard;
|
||||
[array enumerateObjectsUsingBlock:^(MineSkillCardListInfoModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
||||
if ([obj.cardId isEqualToString:@"8"]) {
|
||||
voiceCard = obj;
|
||||
*stop = YES;
|
||||
}
|
||||
}];
|
||||
if (voiceCard) {
|
||||
[array removeObject:voiceCard];
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserDataViewController:didGetVoiceSuccess:)]) {
|
||||
[self.delegate xPMineUserDataViewController:self didGetVoiceSuccess:voiceCard];
|
||||
}
|
||||
self.skillArray = [array copy];
|
||||
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
|
||||
}
|
||||
|
||||
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanInfo {
|
||||
self.clanDetailInfo = clanInfo;
|
||||
- (void)getClanDetailInfoSuccess:(ClanDetailInfoModel *)clanDetailInfo currentUserClanInfo:(ClanDetailInfoModel *)currentUserClanInfo {
|
||||
self.clanDetailInfo = clanDetailInfo;
|
||||
if (currentUserClanInfo.clan.elderUid.length <=0 || currentUserClanInfo.hall.ownerUid.length <=0) {
|
||||
self.isShowEnterClan = YES;
|
||||
} else {
|
||||
self.isShowEnterClan = NO;
|
||||
}
|
||||
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
|
||||
}
|
||||
|
||||
- (void)memberApplyHallSuccess {
|
||||
[self showSuccessToast:@"申请成功,等待管理员审核"];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (void)setUserInfo:(UserInfoModel *)userInfo {
|
||||
_userInfo = userInfo;
|
||||
|
@@ -10,7 +10,7 @@
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPMineUserInfoGiftWallViewController : MvpViewController
|
||||
|
||||
@property (nonatomic,copy) NSString *userUid;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -6,26 +6,91 @@
|
||||
//
|
||||
|
||||
#import "XPMineUserInfoGiftWallViewController.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "XPMacro.h"
|
||||
///View
|
||||
#import "XPMineUserInfoGiftWallCollectionViewCell.h"
|
||||
#import "XPGuildEmptyCollectionViewCell.h"
|
||||
///P
|
||||
#import "XPMineUserInfoGiftWallPresenter.h"
|
||||
#import "XPMineUserInfoGiftWallProtocol.h"
|
||||
|
||||
@interface XPMineUserInfoGiftWallViewController ()
|
||||
|
||||
@interface XPMineUserInfoGiftWallViewController ()<UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, XPMineUserInfoGiftWallProtocol>
|
||||
///列表
|
||||
@property (nonatomic,strong) UICollectionView *collectionView;
|
||||
@property (nonatomic,strong) NSArray *datasource;
|
||||
@end
|
||||
|
||||
@implementation XPMineUserInfoGiftWallViewController
|
||||
|
||||
- (__kindof id)createPresenter {
|
||||
return [[XPMineUserInfoGiftWallPresenter alloc] init];
|
||||
}
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
[self.presenter getUserGiftWall:self.userUid];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.title = @"礼物";
|
||||
[self.view addSubview:self.collectionView];
|
||||
}
|
||||
|
||||
/*
|
||||
#pragma mark - Navigation
|
||||
|
||||
// In a storyboard-based application, you will often want to do a little preparation before navigation
|
||||
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
||||
// Get the new view controller using [segue destinationViewController].
|
||||
// Pass the selected object to the new view controller.
|
||||
- (void)initSubViewConstraints {
|
||||
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self.view);
|
||||
}];
|
||||
}
|
||||
*/
|
||||
|
||||
#pragma mark - UICollectionViewDelegate And UICollectionViewDatasource
|
||||
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
|
||||
return self.datasource.count > 0 ? self.datasource.count : 1;
|
||||
}
|
||||
|
||||
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
return self.datasource.count > 0 ? CGSizeMake(74, 120) : CGSizeMake(KScreenWidth, 500);
|
||||
}
|
||||
|
||||
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
|
||||
if (self.datasource.count > 0) {
|
||||
XPMineUserInfoGiftWallCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoGiftWallCollectionViewCell class]) forIndexPath:indexPath];
|
||||
UserGiftWallInfoModel * giftInfo = [self.datasource objectAtIndex:indexPath.row];
|
||||
cell.giftInfo = giftInfo;
|
||||
return cell;
|
||||
|
||||
}
|
||||
XPGuildEmptyCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class]) forIndexPath:indexPath];
|
||||
return cell;
|
||||
}
|
||||
|
||||
#pragma mark - XPMineUserInfoGiftWallProtocol
|
||||
- (void)getUserGiftWallSuccess:(NSArray *)giftList {
|
||||
self.datasource = giftList;
|
||||
[self.collectionView reloadData];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (UICollectionView *)collectionView{
|
||||
if (!_collectionView) {
|
||||
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||
layout.sectionInset = UIEdgeInsetsMake(15, 15, 15, 15);
|
||||
layout.minimumInteritemSpacing = (CGFloat)(KScreenWidth - 15 * 2 -74* 4 - 5) / 3.0;
|
||||
layout.minimumLineSpacing = 30;
|
||||
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||
_collectionView.dataSource = self;
|
||||
_collectionView.delegate = self;
|
||||
_collectionView.backgroundColor = [UIColor clearColor];
|
||||
[_collectionView registerClass:[XPMineUserInfoGiftWallCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPMineUserInfoGiftWallCollectionViewCell class])];
|
||||
[_collectionView registerClass:[XPGuildEmptyCollectionViewCell class] forCellWithReuseIdentifier:NSStringFromClass([XPGuildEmptyCollectionViewCell class])];
|
||||
}
|
||||
return _collectionView;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
@@ -19,11 +19,15 @@
|
||||
#import "AccountInfoStorage.h"
|
||||
#import "TTPopup.h"
|
||||
#import "XPHtmlUrl.h"
|
||||
#import "XPSkillCardPlayerManager.h"
|
||||
#import "UIImage+Utils.h"
|
||||
///Model
|
||||
#import "MineSkillCardListInfoModel.h"
|
||||
///View
|
||||
#import "XPMineUserInfoTableViewCell.h"
|
||||
#import "XPMineUserInfoHeaderView.h"
|
||||
#import "XPMineUserInfoCustomNavView.h"
|
||||
#import "XPMineUserInfoVoiceCardView.h"
|
||||
///P
|
||||
#import "XPMineUserInfoPresenter.h"
|
||||
#import "XPMineUserInfoProtocol.h"
|
||||
@@ -35,9 +39,9 @@
|
||||
#import "XPRoomViewController.h"
|
||||
#import "XPMineUserDataViewController.h"
|
||||
|
||||
@interface XPMineUserInfoViewController ()<XPMineCustomNavViewDelegate, XPMineUserInfoProtocol, XPMineUserInfoHeaderViewDelegate, JXCategoryViewDelegate,JXPagerViewDelegate>
|
||||
@interface XPMineUserInfoViewController ()<XPMineCustomNavViewDelegate, XPMineUserInfoProtocol, XPMineUserInfoHeaderViewDelegate, JXCategoryViewDelegate,JXPagerViewDelegate, XPMineUserDataViewControllerDelegate>
|
||||
@property (nonatomic, strong) JXCategoryTitleView *titleView;
|
||||
@property (nonatomic, strong) JXCategoryIndicatorLineView *lineView;
|
||||
@property (nonatomic, strong) JXCategoryIndicatorImageView *lineView;
|
||||
@property (nonatomic, strong) JXPagerView *pagingView;
|
||||
@property (nonatomic, strong) NSArray<NSString *> *titles;
|
||||
///头部视图
|
||||
@@ -54,6 +58,8 @@
|
||||
@property (nonatomic,strong) UIButton *attentionButton;
|
||||
///资料
|
||||
@property (nonatomic,strong) XPMineUserDataViewController *userDataVC;
|
||||
///声音秀
|
||||
@property (nonatomic,strong) XPMineUserInfoVoiceCardView *voiceView;
|
||||
@end
|
||||
|
||||
@implementation XPMineUserInfoViewController
|
||||
@@ -70,14 +76,19 @@
|
||||
[super viewDidLoad];
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
[self initHttpRequest];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
if (self.uid > 0) {
|
||||
NSString * uidStr = [NSString stringWithFormat:@"%ld", self.uid];
|
||||
[self.presenter getUserInfoWithUid:uidStr];
|
||||
[self initHttpRequest];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[super viewWillDisappear:animated];
|
||||
if (self.voiceView.isPlaying) {
|
||||
[[XPSkillCardPlayerManager shareInstance] stopMusic];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +101,7 @@
|
||||
- (void)initSubViews {
|
||||
[self.view addSubview:self.pagingView];
|
||||
[self.view addSubview:self.navView];
|
||||
[self.view addSubview:self.voiceView];
|
||||
if (self.uid != [AccountInfoStorage instance].getUid.integerValue) {
|
||||
[self.view addSubview:self.bottomStackView];
|
||||
[self.bottomStackView addArrangedSubview:self.chatButton];
|
||||
@@ -108,10 +120,18 @@
|
||||
make.left.right.top.mas_equalTo(self.view);
|
||||
make.height.mas_equalTo(kNavigationHeight);
|
||||
}];
|
||||
|
||||
[self.voiceView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(self.view);
|
||||
make.top.mas_equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(176);
|
||||
make.size.mas_equalTo(CGSizeMake(65, 25));
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)initHttpRequest {
|
||||
NSString *uid = [NSString stringWithFormat:@"%ld", self.uid];
|
||||
[self.presenter getUserInfoWithUid:uid];
|
||||
|
||||
[self.presenter getUserAttentionState:uid];
|
||||
|
||||
//获取用户详细信息 跟随进房目前使用的这个接口
|
||||
@@ -213,6 +233,15 @@
|
||||
return (id <JXPagerViewListViewDelegate>)viewController;
|
||||
}
|
||||
|
||||
#pragma mark - JXPagerMainTableViewGestureDelegate
|
||||
- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
|
||||
///1000是外部的scrollView 1001是人气主播中的collectionView
|
||||
if ( otherGestureRecognizer.view.tag == 1005) {
|
||||
return NO;
|
||||
}
|
||||
return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
|
||||
}
|
||||
|
||||
#pragma mark - XPMineCustomNavViewDelegate
|
||||
- (void)xPMineCustomNavView:(XPMineUserInfoCustomNavView *)view didClickEditButton:(UIButton *)sender {
|
||||
if (sender.isSelected) {///自己看自己的 去修改资料
|
||||
@@ -241,6 +270,16 @@
|
||||
[XPRoomViewController openRoom:roomUid viewController:self];
|
||||
}
|
||||
|
||||
#pragma mark - XPMineUserDataViewControllerDelegate
|
||||
- (void)xPMineUserDataViewController:(XPMineUserDataViewController *)viewController didGetVoiceSuccess:(MineSkillCardListInfoModel *)voiceCard {
|
||||
if (voiceCard && [voiceCard.cardId isEqualToString:@"8"]) {
|
||||
self.voiceView.hidden = NO;
|
||||
self.voiceView.voiceInfo = voiceCard;
|
||||
} else {
|
||||
self.voiceView.hidden = YES;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - XPMineUserInfoProtocol
|
||||
- (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo {
|
||||
self.userInfo = userInfo;
|
||||
@@ -372,9 +411,11 @@
|
||||
_titleView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
|
||||
|
||||
JXCategoryIndicatorImageView *lineView = [[JXCategoryIndicatorImageView alloc] init];
|
||||
lineView.indicatorImageViewSize = CGSizeMake(41, 10);
|
||||
lineView.verticalMargin = 14;
|
||||
lineView.indicatorImageView.image = [UIImage imageNamed:@"home_recommend_indicator_room"];
|
||||
lineView.indicatorImageViewSize = CGSizeMake(16, 6);
|
||||
lineView.verticalMargin = 7;
|
||||
lineView.indicatorImageView.layer.masksToBounds = YES;
|
||||
lineView.indicatorImageView.layer.cornerRadius = 3;
|
||||
lineView.indicatorImageView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xFFC000), UIColorFromRGB(0xFFF9DB)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(16, 6)];
|
||||
_titleView.indicators = @[lineView];
|
||||
}
|
||||
return _titleView;
|
||||
@@ -387,6 +428,7 @@
|
||||
_pagingView.listContainerView.backgroundColor = [UIColor clearColor];
|
||||
_pagingView.mainTableView.backgroundColor = [UIColor clearColor];
|
||||
_pagingView.listContainerView.listCellBackgroundColor = UIColor.clearColor;
|
||||
_pagingView.mainTableView.gestureDelegate = self;
|
||||
}
|
||||
return _pagingView;
|
||||
}
|
||||
@@ -401,10 +443,17 @@
|
||||
- (XPMineUserDataViewController *)userDataVC {
|
||||
if (!_userDataVC) {
|
||||
_userDataVC = [[XPMineUserDataViewController alloc] init];
|
||||
_userDataVC.delegate = self;
|
||||
}
|
||||
return _userDataVC;
|
||||
}
|
||||
|
||||
- (XPMineUserInfoVoiceCardView *)voiceView {
|
||||
if (!_voiceView) {
|
||||
_voiceView = [[XPMineUserInfoVoiceCardView alloc] init];
|
||||
_voiceView.hidden = NO;
|
||||
}
|
||||
return _voiceView;
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
@@ -26,13 +26,13 @@
|
||||
///覆盖的view
|
||||
@property (nonatomic,strong) UIImageView * coverImageView;
|
||||
///显示当前的页数
|
||||
@property (nonatomic,strong) UILabel *pageLabel;
|
||||
@property (nonatomic,strong) UIButton *pageButton;
|
||||
///审核中图标
|
||||
@property (nonatomic,strong) UIImageView *reviewIcon;
|
||||
///图片数组
|
||||
@property (nonatomic,strong) NSArray *imageUrls;
|
||||
///用户的头像和相册
|
||||
@property (nonatomic,strong) NSMutableArray *userPhtotArray;
|
||||
@property (nonatomic,strong) NSMutableArray<UserPhoto *> *userPhtotArray;
|
||||
///用户信息
|
||||
@property (nonatomic,strong) UIView * userInfoView;
|
||||
///用户信息的背景
|
||||
@@ -97,7 +97,6 @@
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.cycleScrollView];
|
||||
[self addSubview:self.coverImageView];
|
||||
[self addSubview:self.pageLabel];
|
||||
[self addSubview:self.reviewIcon];
|
||||
[self addSubview:self.userInfoView];
|
||||
|
||||
@@ -108,6 +107,7 @@
|
||||
[self.usershadowImageView addSubview:self.nickStackView];
|
||||
[self.usershadowImageView addSubview:self.idStackView];
|
||||
[self.usershadowImageView addSubview:self.tagStackView];
|
||||
[self.usershadowImageView addSubview:self.pageButton];
|
||||
|
||||
[self.nickStackView addArrangedSubview:self.nameLabel];
|
||||
[self.nickStackView addArrangedSubview:self.sexImageView];
|
||||
@@ -142,13 +142,6 @@
|
||||
make.edges.mas_equalTo(self.cycleScrollView);
|
||||
}];
|
||||
|
||||
[self.pageLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(-15);
|
||||
make.width.mas_equalTo(35);
|
||||
make.height.mas_equalTo(16);
|
||||
make.bottom.mas_equalTo(self.cycleScrollView).offset(-30);
|
||||
}];
|
||||
|
||||
[self.reviewIcon mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.right.mas_equalTo(self);
|
||||
make.width.mas_equalTo(85);
|
||||
@@ -166,6 +159,13 @@
|
||||
make.height.mas_equalTo(146);
|
||||
}];
|
||||
|
||||
[self.pageButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(-15);
|
||||
make.width.mas_equalTo(35);
|
||||
make.height.mas_equalTo(16);
|
||||
make.bottom.mas_equalTo(self.signBackView.mas_top).offset(-13);
|
||||
}];
|
||||
|
||||
[self.signBackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(79);
|
||||
make.left.right.mas_equalTo(self.userInfoView);
|
||||
@@ -212,19 +212,19 @@
|
||||
[self.tagStackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.usershadowImageView).offset(15);
|
||||
make.top.mas_equalTo(self.beautifulImageViw.mas_bottom).offset(5);
|
||||
make.height.mas_equalTo(20);
|
||||
make.height.mas_equalTo(25);
|
||||
}];
|
||||
|
||||
[self.experImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(20);
|
||||
make.width.height.mas_equalTo(25);
|
||||
}];
|
||||
|
||||
[self.charmImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(20);
|
||||
make.width.height.mas_equalTo(25);
|
||||
}];
|
||||
|
||||
[self.newUserImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(15);
|
||||
make.width.height.mas_equalTo(20);
|
||||
}];
|
||||
|
||||
[self.officalImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
@@ -266,7 +266,7 @@
|
||||
|
||||
#pragma mark - SDCycleScrollViewDelegate
|
||||
-(void)cycleScrollView:(SDCycleScrollView *)cycleScrollView didScrollToIndex:(NSInteger)index {
|
||||
self.pageLabel.text = [NSString stringWithFormat:@"%ld/%lu",(index + 1), (unsigned long)self.imageUrls.count];
|
||||
[self.pageButton setTitle:[NSString stringWithFormat:@"%ld/%lu",(index + 1), (unsigned long)self.imageUrls.count] forState:UIControlStateNormal];
|
||||
UserPhoto * photo = [self.userPhtotArray objectAtIndex:index];
|
||||
self.reviewIcon.hidden = !photo.isReview;
|
||||
}
|
||||
@@ -343,9 +343,9 @@
|
||||
if (imageUrls.count > 0) {
|
||||
self.imageUrls = imageUrls;
|
||||
self.cycleScrollView.imageURLStringsGroup = imageUrls;
|
||||
self.pageLabel.text = [NSString stringWithFormat:@"1/%lu",(unsigned long)imageUrls.count];
|
||||
[self.pageButton setTitle:[NSString stringWithFormat:@"1/%lu",(unsigned long)imageUrls.count] forState:UIControlStateNormal];;
|
||||
// 要初始化一下当前的审核状态
|
||||
self.reviewIcon.hidden = ![self.userInfo.privatePhoto objectAtIndex:0].isReview;
|
||||
self.reviewIcon.hidden = ![self.userPhtotArray objectAtIndex:0].isReview;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -420,7 +420,7 @@
|
||||
if (!_beautifulImageViw) {
|
||||
_beautifulImageViw = [[UIImageView alloc] init];
|
||||
_beautifulImageViw.userInteractionEnabled = YES;
|
||||
_beautifulImageViw.image = [UIImage imageNamed:@""];
|
||||
_beautifulImageViw.image = [UIImage imageNamed:@"common_icon_beautiful"];
|
||||
}
|
||||
return _beautifulImageViw;
|
||||
}
|
||||
@@ -476,19 +476,17 @@
|
||||
return _cycleScrollView;
|
||||
}
|
||||
|
||||
- (UILabel *)pageLabel {
|
||||
if (!_pageLabel) {
|
||||
_pageLabel = [[UILabel alloc] init];
|
||||
_pageLabel.font = [UIFont systemFontOfSize:10];
|
||||
_pageLabel.textColor = [ThemeColor mainTextColor];
|
||||
_pageLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_pageLabel.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.1];
|
||||
_pageLabel.layer.masksToBounds = YES;
|
||||
_pageLabel.layer.cornerRadius = 8;
|
||||
- (UIButton *)pageButton {
|
||||
if (!_pageButton) {
|
||||
_pageButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_pageButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
|
||||
_pageButton.titleLabel.font = [UIFont systemFontOfSize:10];
|
||||
[_pageButton setBackgroundImage:[UIImage imageNamed:@"mine_user_info_header_page_bg"] forState:UIControlStateNormal];
|
||||
}
|
||||
return _pageLabel;
|
||||
return _pageButton;
|
||||
}
|
||||
|
||||
|
||||
- (UIImageView *)reviewIcon {
|
||||
if (!_reviewIcon) {
|
||||
_reviewIcon = [[UIImageView alloc] init];
|
||||
|
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// XPMineUserInfoVoiceCardView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/4/15.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class MineSkillCardListInfoModel;
|
||||
@interface XPMineUserInfoVoiceCardView : UIView
|
||||
///播放完成
|
||||
@property (nonatomic,assign, readonly) BOOL isPlaying;
|
||||
@property (nonatomic,strong) MineSkillCardListInfoModel *voiceInfo;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,160 @@
|
||||
//
|
||||
// XPMineUserInfoVoiceCardView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by 冯硕 on 2022/4/15.
|
||||
//
|
||||
|
||||
#import "XPMineUserInfoVoiceCardView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
#import <AFNetworking.h>
|
||||
///Tool
|
||||
#import "UIImage+Utils.h"
|
||||
#import "UIButton+EnlargeTouchArea.h"
|
||||
#import "ThemeColor.h"
|
||||
///Model
|
||||
#import "MineSkillCardListInfoModel.h"
|
||||
#import "XPSkillCardPlayerManager.h"
|
||||
|
||||
@interface XPMineUserInfoVoiceCardView ()
|
||||
///背景
|
||||
@property (nonatomic,strong) UIImageView *backImaegView;
|
||||
///播放
|
||||
@property (nonatomic,strong) UIButton *playButton;
|
||||
///音符
|
||||
@property (nonatomic,strong) UIImageView *noteImaegView;
|
||||
///播放完成
|
||||
@property (nonatomic,assign) BOOL isPlaying;
|
||||
@end
|
||||
|
||||
@implementation XPMineUserInfoVoiceCardView
|
||||
|
||||
- (void)dealloc {
|
||||
self.isPlaying = NO;
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.backImaegView];
|
||||
[self.backImaegView addSubview:self.playButton];
|
||||
[self.backImaegView addSubview:self.noteImaegView];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backImaegView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.top.bottom.mas_equalTo(self);
|
||||
make.right.mas_equalTo(self).offset(13);
|
||||
}];
|
||||
|
||||
[self.playButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(15, 15));
|
||||
make.left.mas_equalTo(self.backImaegView).offset(6);
|
||||
make.centerY.mas_equalTo(self.backImaegView);
|
||||
}];
|
||||
|
||||
[self.noteImaegView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.size.mas_equalTo(CGSizeMake(34, 11));
|
||||
make.centerY.mas_equalTo(self.backImaegView);
|
||||
make.left.mas_equalTo(self.playButton.mas_right).offset(7);
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)playButtonAction:(UIButton *)sender {
|
||||
sender.selected = !sender.selected;
|
||||
if (!self.isPlaying) {
|
||||
if(self.voiceInfo.propVals.count) {
|
||||
NSString *fileName = [[self.voiceInfo.name componentsSeparatedByString:@"/"] lastObject];
|
||||
NSString * url = [self.voiceInfo.propVals objectAtIndex:0];
|
||||
NSString *filePath = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"];
|
||||
NSString *fullPath = [filePath stringByAppendingPathComponent:fileName];
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath]) {
|
||||
self.isPlaying = YES;
|
||||
sender.selected = YES;
|
||||
[[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:fullPath completionBlock:^{
|
||||
self.isPlaying = NO;
|
||||
sender.selected = NO;
|
||||
[[XPSkillCardPlayerManager shareInstance] stopMusic];
|
||||
}];
|
||||
} else {
|
||||
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
|
||||
NSFileManager *fileMgr = [[NSFileManager alloc] init];
|
||||
[fileMgr createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
|
||||
}
|
||||
[self downloadAudioWithFileName:fileName musicUrl:url completion:^(BOOL isSuccess, NSString *editAudioPath) {
|
||||
self.isPlaying = YES;
|
||||
sender.selected = YES;
|
||||
[[XPSkillCardPlayerManager shareInstance] playerVoiceWithPath:editAudioPath completionBlock:^{
|
||||
self.isPlaying = NO;
|
||||
sender.selected = NO;
|
||||
[[XPSkillCardPlayerManager shareInstance] stopMusic];
|
||||
}];
|
||||
}];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
self.isPlaying = NO;
|
||||
sender.selected = NO;
|
||||
[[XPSkillCardPlayerManager shareInstance] stopMusic];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)downloadAudioWithFileName:(NSString *)fileName musicUrl:(NSString *)musicUrl completion:(void (^) (BOOL isSuccess, NSString *editAudioPath))completion {
|
||||
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
|
||||
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:musicUrl]];
|
||||
NSURLSessionDownloadTask *download = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
|
||||
} destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
|
||||
NSString *filePath = [[[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"mineSkillCardVoice"] stringByAppendingPathComponent:fileName];
|
||||
return [NSURL fileURLWithPath:filePath];
|
||||
} completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
|
||||
if (!error) {
|
||||
completion(YES, filePath.absoluteString);
|
||||
} else {
|
||||
completion(NO, nil);
|
||||
}
|
||||
}];
|
||||
[download resume];
|
||||
}
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIImageView *)backImaegView {
|
||||
if (!_backImaegView) {
|
||||
_backImaegView = [[UIImageView alloc] init];
|
||||
_backImaegView.userInteractionEnabled = YES;
|
||||
_backImaegView.image = [UIImage gradientColorImageFromColors:@[UIColorFromRGB(0xF8F8F4), UIColorFromRGB(0xE7FBFD)] gradientType:GradientTypeLeftToRight imgSize:CGSizeMake(77, 25)];
|
||||
_backImaegView.layer.masksToBounds = YES;
|
||||
_backImaegView.layer.cornerRadius = 25/2;
|
||||
}
|
||||
return _backImaegView;
|
||||
}
|
||||
|
||||
- (UIButton *)playButton {
|
||||
if (!_playButton) {
|
||||
_playButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_playButton setImage:[UIImage imageNamed:@"mine_user_info_skill_card_voice_play"] forState:UIControlStateNormal];
|
||||
[_playButton setImage:[UIImage imageNamed:@"mine_user_info_skill_card_voice_pause"] forState:UIControlStateSelected];
|
||||
[_playButton addTarget:self action:@selector(playButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_playButton setEnlargeEdgeWithTop:8 right:10 bottom:8 left:10];
|
||||
}
|
||||
return _playButton;
|
||||
}
|
||||
|
||||
- (UIImageView *)noteImaegView {
|
||||
if (!_noteImaegView) {
|
||||
_noteImaegView = [[UIImageView alloc] init];
|
||||
_noteImaegView.userInteractionEnabled = YES;
|
||||
_noteImaegView.image = [UIImage imageNamed:@"mine_user_info_skill_card_voice_note"];
|
||||
}
|
||||
return _noteImaegView;
|
||||
}
|
||||
|
||||
|
||||
@end
|