提交
@@ -130,20 +130,12 @@
|
||||
self.nameLabel.shimmerColor = [UIColor colorWithHexString:self.model.nickname_color];
|
||||
[self.nameLabel startShimmer];
|
||||
}
|
||||
// else{
|
||||
// self.nameLabel.shimmerColor = [UIColor clearColor];
|
||||
// [self.nameLabel stopShimmer];
|
||||
// }
|
||||
}
|
||||
-(void)nameStopAnimate{
|
||||
if ([self.model.nickname_color isExist]) {
|
||||
self.nameLabel.shimmerColor = [UIColor colorWithHexString:self.model.nickname_color];
|
||||
[self.nameLabel stopShimmer];
|
||||
}
|
||||
// else{
|
||||
// self.nameLabel.shimmerColor = [UIColor clearColor];
|
||||
// [self.nameLabel stopShimmer];
|
||||
// }
|
||||
}
|
||||
|
||||
-(void)previewPhotoWithCurrentIndex:(NSInteger)currentIndex{
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
@property (nonatomic,strong)UIButton *skyDownBtn;
|
||||
@property (nonatomic,strong)QXNewPeoplePopView *nPeopleRechargeView;
|
||||
|
||||
@property (nonatomic,strong)QXAppstoreHomeView *appStoreView;
|
||||
//@property (nonatomic,strong)QXAppstoreHomeView *appStoreView;
|
||||
@property (nonatomic,strong)SDCycleScrollView *rechargePermissionView;
|
||||
@property (nonatomic,strong)NSMutableArray *rechargePermissionArray;
|
||||
|
||||
@@ -139,8 +139,8 @@
|
||||
// }];
|
||||
[self getBanner];
|
||||
// [self getRechargePermission];
|
||||
self.appStoreView.hidden = YES;
|
||||
[self.view addSubview:self.appStoreView];
|
||||
// self.appStoreView.hidden = YES;
|
||||
// [self.view addSubview:self.appStoreView];
|
||||
|
||||
self.rechargePermissionView = [SDCycleScrollView cycleScrollViewWithFrame:CGRectMake(SCREEN_WIDTH-80-17, SCREEN_HEIGHT-(TabbarContentHeight+90+80), 80, 80) delegate:self placeholderImage:nil];
|
||||
self.rechargePermissionView.pageControlBottomOffset = -15;
|
||||
@@ -402,11 +402,11 @@
|
||||
@strongify(self)
|
||||
[self.dataArray removeAllObjects];
|
||||
[self.dataArray addObjectsFromArray:list];
|
||||
if (isAppStore) {
|
||||
self.appStoreView.hidden = NO;
|
||||
}else{
|
||||
self.appStoreView.hidden = YES;
|
||||
}
|
||||
// if (isAppStore) {
|
||||
// self.appStoreView.hidden = NO;
|
||||
// }else{
|
||||
// self.appStoreView.hidden = YES;
|
||||
// }
|
||||
// weakSelf.appStoreView.dataArray = list;
|
||||
self.topView.dataArray = list;
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
@@ -424,7 +424,7 @@
|
||||
}
|
||||
[self.bannerArry removeAllObjects];
|
||||
[self.bannerArry addObjectsFromArray:list];
|
||||
self.appStoreView.bannerArray = list;
|
||||
// self.appStoreView.bannerArray = list;
|
||||
self.bannerScrollView.imageURLStringsGroup = arr;
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
@@ -671,12 +671,12 @@
|
||||
return _rechargePermissionArray;
|
||||
}
|
||||
|
||||
-(QXAppstoreHomeView *)appStoreView{
|
||||
if (!_appStoreView) {
|
||||
_appStoreView = [[QXAppstoreHomeView alloc] initWithFrame:CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight-TabbarContentHeight)];
|
||||
}
|
||||
return _appStoreView;
|
||||
}
|
||||
//-(QXAppstoreHomeView *)appStoreView{
|
||||
// if (!_appStoreView) {
|
||||
// _appStoreView = [[QXAppstoreHomeView alloc] initWithFrame:CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight-TabbarContentHeight)];
|
||||
// }
|
||||
// return _appStoreView;
|
||||
//}
|
||||
-(void)dealloc{
|
||||
[[NSNotificationCenter defaultCenter] removeObserver:self];
|
||||
}
|
||||
|
||||
@@ -19,4 +19,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@interface QXHeartBeatSpaceListModel : NSObject
|
||||
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation QXHeartBeatSpaceListModel
|
||||
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@@ -530,11 +530,12 @@
|
||||
showToast(QXText(@"请输入正确的手机号码"));
|
||||
return;
|
||||
}
|
||||
sender.userInteractionEnabled = NO;
|
||||
MJWeakSelf
|
||||
[QXLoginNetwork getSmscodeWithMobile:self.accountTextField.textField.text type:GetSmscodeTypeLogin successBlock:^(id _Nonnull responseObject) {
|
||||
[weakSelf.codeTextField startTimeDown];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
sender.userInteractionEnabled = YES;
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
@@ -260,6 +260,9 @@
|
||||
__block int timeCount = 60;
|
||||
_timer = [QXTimer scheduledTimerWithTimeInterval:1 repeats:YES queue:dispatch_get_main_queue() block:^{
|
||||
timeCount--;
|
||||
if (self == nil) {
|
||||
return;
|
||||
}
|
||||
if (timeCount<=0) {
|
||||
[self->_timer invalidate];
|
||||
self->_codeBtn.userInteractionEnabled = YES;
|
||||
@@ -269,4 +272,10 @@
|
||||
}
|
||||
}];
|
||||
}
|
||||
-(void)dealloc{
|
||||
if (_timer) {
|
||||
[_timer invalidate];
|
||||
_timer = nil;
|
||||
}
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -145,6 +145,19 @@ typedef NS_ENUM(NSInteger) {
|
||||
QXRoomMessageTypeSingerRoomNextSongDidChanged = 1071,
|
||||
/// 歌曲数量发生变化
|
||||
QXRoomMessageTypeSingerRoomSongCountDidChanged = 1072,
|
||||
|
||||
/// CP 特效
|
||||
QXRoomMessageTypeCpJoinRoom = 1080,
|
||||
|
||||
|
||||
/// 开始签约
|
||||
QXRoomMessageTypeStartSign = 1090,
|
||||
/// 结束签约
|
||||
QXRoomMessageTypeEndSign = 1092,
|
||||
/// 签约延时
|
||||
QXRoomMessageTypeDelaySignTime = 1093,
|
||||
/// 身价发生变化
|
||||
QXRoomMessageTypeSignBodyPriceDidChanged = 1091,
|
||||
}QXRoomMessageType;
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol QXRoomMessageManagerDelegate <NSObject>
|
||||
@@ -290,6 +303,16 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// 已点歌曲数量发生变化
|
||||
-(void)singerSongCountDidChanged:(NSString*)count;
|
||||
|
||||
|
||||
/// 签约开始
|
||||
-(void)signDidStartWithEndTime:(NSString *)endTime signId:(NSString *)signId signDay:(NSString*)signDay signValue:(NSString*)signValue;
|
||||
/// 签约结束
|
||||
-(void)signDidEndWithUserInfo1:(QXUserHomeModel*)userInfo1 userInfo2:(QXUserHomeModel*)userInfo2 sign_value:(NSString*)sign_value;
|
||||
/// 签约身价变化
|
||||
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId;
|
||||
/// 签约身价变化
|
||||
-(void)signTimeDelayWithEndTime:(NSString*)endTime;
|
||||
|
||||
@end
|
||||
@interface QXRoomMessageManager : NSObject
|
||||
@property (nonatomic,weak)id<QXRoomMessageManagerDelegate>delegate;
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#import "TUIChatConfig.h"
|
||||
#import "QXDrifNobilityJoinRoomView.h"
|
||||
#import "QXCustomAlertView.h"
|
||||
#import "QXHeartBeatSpaceViewController.h"
|
||||
|
||||
@interface QXRoomMessageManager() <V2TIMGroupListener,V2TIMSimpleMsgListener,V2TIMAdvancedMsgListener>
|
||||
@property (nonatomic,strong)NSString *groupId;
|
||||
@@ -677,6 +678,46 @@
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeCpJoinRoom:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
[[QXGiftPlayerManager shareManager] displayCpEffectView:model];
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeStartSign:{
|
||||
NSString *sign_id = [NSString stringWithFormat:@"%@",msg.Text[@"sign_id"]];
|
||||
NSString *end_time = [NSString stringWithFormat:@"%@",msg.Text[@"end_time"]];
|
||||
NSString *sign_day = [NSString stringWithFormat:@"%@",msg.Text[@"sign_day"]];
|
||||
NSString *current_body_value = [NSString stringWithFormat:@"%@",msg.Text[@"current_body_value"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(signDidStartWithEndTime:signId:signDay:signValue:)]) {
|
||||
[self.delegate signDidStartWithEndTime:end_time signId:sign_id signDay:sign_day signValue:current_body_value];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeEndSign:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
NSString *sign_value = [NSString stringWithFormat:@"%@",msg.Text[@"sign_value"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(signDidEndWithUserInfo1:userInfo2:sign_value:)]) {
|
||||
[self.delegate signDidEndWithUserInfo1:model.FromUserInfo userInfo2:model.ToUserInfo sign_value:sign_value];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeDelaySignTime:{
|
||||
NSString *end_time = [NSString stringWithFormat:@"%@",msg.Text[@"end_time"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(signTimeDelayWithEndTime:)]) {
|
||||
[self.delegate signTimeDelayWithEndTime:end_time];
|
||||
}
|
||||
}
|
||||
break;
|
||||
case QXRoomMessageTypeSignBodyPriceDidChanged:{
|
||||
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
|
||||
NSString *sign_id = [NSString stringWithFormat:@"%@",msg.Text[@"sign_id"]];
|
||||
NSString *sign_value = [NSString stringWithFormat:@"%@",msg.Text[@"sign_value"]];
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(signValueDidChangedWithSignUserInfo:sign_value:signId:)]) {
|
||||
[self.delegate signValueDidChangedWithSignUserInfo:model.FromUserInfo sign_value:sign_value signId:sign_id];
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -730,6 +771,10 @@
|
||||
|
||||
alertView.commitBlock = ^{
|
||||
QXLOG(@"进入心动空间");
|
||||
QXHeartBeatSpaceViewController *vc = [[QXHeartBeatSpaceViewController alloc] init];
|
||||
QXRoomNavigationController *navagationController = (QXRoomNavigationController*)KEYWINDOW.rootViewController;
|
||||
vc.userId = QXGlobal.shareGlobal.loginModel.user_id;
|
||||
[navagationController pushViewController:vc animated:YES];
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,10 @@
|
||||
#import "QXSystemNoticeViewController.h"
|
||||
#import "QXSystemNoticeCell.h"
|
||||
#import "QXSystemMessageCell.h"
|
||||
#import "QXSystemMessageHandleCell.h"
|
||||
#import "QXMessageServices.h"
|
||||
#import "AppDelegate.h"
|
||||
@interface QXSystemNoticeViewController ()<UITableViewDataSource,UITableViewDelegate>
|
||||
@interface QXSystemNoticeViewController ()<UITableViewDataSource,UITableViewDelegate,QXSystemMessageHandleCellDelegate>
|
||||
@property (nonatomic,strong)UITableView *tableView;
|
||||
@property (nonatomic,assign)CGFloat rowHeight;
|
||||
@end
|
||||
@@ -78,12 +79,22 @@
|
||||
cell.model = self.dataArray[indexPath.row];
|
||||
return cell;
|
||||
}else{
|
||||
QXSystemMessageCell *cell = [QXSystemMessageCell cellWithTableView:tableView];
|
||||
cell.model = self.dataArray[indexPath.row];
|
||||
return cell;
|
||||
QXMessageListModel *model = self.dataArray[indexPath.row];
|
||||
if (model.type.intValue == 6) {
|
||||
QXSystemMessageHandleCell *cell = [QXSystemMessageHandleCell cellWithTableView:tableView];
|
||||
cell.model = model;
|
||||
cell.delegate = self;
|
||||
return cell;
|
||||
}else{
|
||||
QXSystemMessageCell *cell = [QXSystemMessageCell cellWithTableView:tableView];
|
||||
cell.model = model;
|
||||
return cell;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXMessageListModel *model = self.dataArray[indexPath.row];
|
||||
if (model.room_id.integerValue > 0) {
|
||||
@@ -97,13 +108,22 @@
|
||||
}
|
||||
}
|
||||
|
||||
-(void)handleInviteIsAgree:(BOOL)isAgree message:(nonnull QXMessageListModel *)message{
|
||||
MJWeakSelf
|
||||
[QXMessageServices guildInviteApplyHandleWithApplyId:message.id type:isAgree?@"1":@"2" successBlock:^(NSDictionary * _Nonnull dict) {
|
||||
showToast(@"操作成功");
|
||||
weakSelf.page = 1;
|
||||
[weakSelf getMessageList];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
showToast(msg);
|
||||
}];
|
||||
}
|
||||
-(UITableView *)tableView{
|
||||
if (!_tableView) {
|
||||
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight) style:(UITableViewStylePlain)];
|
||||
_tableView.dataSource = self;
|
||||
_tableView.delegate = self;
|
||||
_tableView.backgroundColor = [UIColor clearColor];
|
||||
_tableView.rowHeight = 60;
|
||||
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
||||
_tableView.rowHeight = UITableViewAutomaticDimension;
|
||||
_tableView.estimatedRowHeight = self.rowHeight;
|
||||
|
||||
@@ -40,6 +40,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@property (strong,nonatomic)NSString *image;
|
||||
@property (strong,nonatomic)NSString *url;
|
||||
/// 公会邀请处理状态 0未处理 1已通过 2已拒绝
|
||||
@property (strong,nonatomic)NSString *guild_invited_status;
|
||||
|
||||
@property (strong,nonatomic)NSString *room_id;
|
||||
@end
|
||||
|
||||
@@ -31,6 +31,13 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
+(void)getMessageWithId:(NSString*)Id
|
||||
successBlock:(void (^)(QXMessageListModel *model))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
/**
|
||||
消息工会邀请处理
|
||||
*/
|
||||
+(void)guildInviteApplyHandleWithApplyId:(NSString*)applyId
|
||||
type:(NSString*)type
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -48,4 +48,24 @@
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
消息工会邀请处理
|
||||
*/
|
||||
+(void)guildInviteApplyHandleWithApplyId:(NSString*)applyId
|
||||
type:(NSString*)type
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"apply_id":applyId?:@"",
|
||||
@"type":type?type:@""
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXGuildInviteApplyHandle parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
@end
|
||||
|
||||
32
QXLive/Message(音信)/View/QXSystemMessageHandleCell.h
Normal file
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// QXSystemMessageHandleCell.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/22.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXMessageModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol QXSystemMessageHandleCellDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
-(void)handleInviteIsAgree:(BOOL)isAgree message:(QXMessageListModel*)message;
|
||||
|
||||
@end
|
||||
|
||||
@interface QXSystemMessageHandleCell : UITableViewCell
|
||||
@property (weak, nonatomic) IBOutlet UILabel *titleLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *cancelBtn;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *commitBtn;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *stateBtn;
|
||||
|
||||
@property (weak, nonatomic) IBOutlet UILabel *contentLabel;
|
||||
|
||||
@property (weak, nonatomic) id<QXSystemMessageHandleCellDelegate> delegate;
|
||||
@property (nonatomic,strong)QXMessageListModel *model;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
66
QXLive/Message(音信)/View/QXSystemMessageHandleCell.m
Normal file
@@ -0,0 +1,66 @@
|
||||
//
|
||||
// QXSystemMessageHandleCell.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/22.
|
||||
//
|
||||
|
||||
#import "QXSystemMessageHandleCell.h"
|
||||
|
||||
@implementation QXSystemMessageHandleCell
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView{
|
||||
static NSString *cellId = @"QXSystemMessageHandleCell";
|
||||
QXSystemMessageHandleCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
|
||||
if (!cell) {
|
||||
cell = [[NSBundle mainBundle] loadNibNamed:cellId owner:nil options:nil].lastObject;
|
||||
cell.backgroundColor = [UIColor clearColor];
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
|
||||
-(void)setModel:(QXMessageListModel *)model{
|
||||
_model = model;
|
||||
self.contentLabel.text = model.content;
|
||||
NSDate *date = [NSDate dateWithTimeIntervalSince1970:model.createtime.longLongValue]; //此处根据项目需求,选择是否除以1000 , 如果时间戳精确到秒则去掉1000
|
||||
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
|
||||
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
|
||||
NSString*time = [formatter stringFromDate:date];
|
||||
self.timeLabel.text = time;
|
||||
if (model.guild_invited_status.intValue == 0) {
|
||||
self.cancelBtn.hidden = NO;
|
||||
self.commitBtn.hidden = NO;
|
||||
self.stateBtn.hidden = YES;
|
||||
}else if (model.guild_invited_status.intValue == 1){
|
||||
self.cancelBtn.hidden = YES;
|
||||
self.commitBtn.hidden = YES;
|
||||
self.stateBtn.hidden = NO;
|
||||
self.stateBtn.selected = NO;
|
||||
}else if (model.guild_invited_status.intValue == 2){
|
||||
self.cancelBtn.hidden = YES;
|
||||
self.commitBtn.hidden = YES;
|
||||
self.stateBtn.hidden = NO;
|
||||
self.stateBtn.selected = YES;
|
||||
}
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
}
|
||||
- (IBAction)cancelAction:(id)sender {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(handleInviteIsAgree:message:)]) {
|
||||
[self.delegate handleInviteIsAgree:NO message:self.model];
|
||||
}
|
||||
}
|
||||
- (IBAction)commitAction:(id)sender {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(handleInviteIsAgree:message:)]) {
|
||||
[self.delegate handleInviteIsAgree:YES message:self.model];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
||||
[super setSelected:selected animated:animated];
|
||||
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
@end
|
||||
156
QXLive/Message(音信)/View/QXSystemMessageHandleCell.xib
Normal file
@@ -0,0 +1,156 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" rowHeight="230" id="KGk-i7-Jjw" customClass="QXSystemMessageHandleCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="535" height="230"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="535" height="230"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="2023-12-12 12:11:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k89-mp-kfb">
|
||||
<rect key="frame" x="16" y="12" width="503" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="ZLC-vO-7Au"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="2eO-sZ-nQk">
|
||||
<rect key="frame" x="16" y="46" width="503" height="184"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="【某某传媒·粉丝狂欢】今晚22点已开启嗨玩三重奏,不仅有才艺舞台,还有分组pk,粉丝互动环节等你来~" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xZb-cE-pmT">
|
||||
<rect key="frame" x="10" y="40" width="483" height="74"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="0.20000001789999999" green="0.20000001789999999" blue="0.20000001789999999" alpha="0.84705883260000003" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="公会通知" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="QNa-NX-Jv7">
|
||||
<rect key="frame" x="10" y="12" width="483" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="bP9-Yu-qHk"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="0.20000001789999999" green="0.20000001789999999" blue="0.20000001789999999" alpha="0.84705883260000003" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TYD-pk-Hrj">
|
||||
<rect key="frame" x="136.66666666666666" y="130" width="110" height="42"/>
|
||||
<color key="backgroundColor" red="0.95294117647058818" green="0.95294117647058818" blue="0.95294117647058818" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="110" id="Och-3b-hUb"/>
|
||||
<constraint firstAttribute="height" constant="42" id="ivE-DC-HsD"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="取消">
|
||||
<color key="titleColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="21"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="cancelAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="iK3-mS-a91"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="sR8-oC-oyN">
|
||||
<rect key="frame" x="254.66666666666669" y="130" width="110" height="42"/>
|
||||
<color key="backgroundColor" red="0.22745099663734436" green="0.73725497722625732" blue="0.42745098471641541" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="42" id="Zhk-jD-xb4"/>
|
||||
<constraint firstAttribute="width" constant="110" id="s21-Na-Sk1"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="确认">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="21"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="commitAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="uFS-cO-2IB"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Svn-Qm-TJa">
|
||||
<rect key="frame" x="196.66666666666666" y="130" width="109.99999999999997" height="42"/>
|
||||
<color key="backgroundColor" red="0.95294117649999999" green="0.95294117649999999" blue="0.95294117649999999" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="42" id="TDD-P4-OBJ"/>
|
||||
<constraint firstAttribute="width" constant="110" id="dqr-GS-Ytb"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="15"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="已同意">
|
||||
<color key="titleColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
<state key="selected" title="已拒绝"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="21"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="sR8-oC-oyN" firstAttribute="leading" secondItem="TYD-pk-Hrj" secondAttribute="trailing" constant="8" id="4sX-G8-MLB"/>
|
||||
<constraint firstAttribute="trailing" secondItem="xZb-cE-pmT" secondAttribute="trailing" constant="10" id="9Cz-Jd-aIT"/>
|
||||
<constraint firstItem="QNa-NX-Jv7" firstAttribute="leading" secondItem="2eO-sZ-nQk" secondAttribute="leading" constant="10" id="EIT-LE-qbh"/>
|
||||
<constraint firstItem="Svn-Qm-TJa" firstAttribute="centerY" secondItem="TYD-pk-Hrj" secondAttribute="centerY" id="Edo-KK-EQ7"/>
|
||||
<constraint firstAttribute="trailing" secondItem="QNa-NX-Jv7" secondAttribute="trailing" constant="10" id="Fe4-Ge-oSe"/>
|
||||
<constraint firstItem="TYD-pk-Hrj" firstAttribute="top" secondItem="xZb-cE-pmT" secondAttribute="bottom" constant="16" id="GtC-Uu-kKb"/>
|
||||
<constraint firstItem="sR8-oC-oyN" firstAttribute="centerY" secondItem="TYD-pk-Hrj" secondAttribute="centerY" id="am3-th-Di3"/>
|
||||
<constraint firstItem="Svn-Qm-TJa" firstAttribute="centerX" secondItem="2eO-sZ-nQk" secondAttribute="centerX" id="kd5-ej-naZ"/>
|
||||
<constraint firstItem="TYD-pk-Hrj" firstAttribute="centerX" secondItem="2eO-sZ-nQk" secondAttribute="centerX" constant="-60" id="sls-gP-EjX"/>
|
||||
<constraint firstItem="QNa-NX-Jv7" firstAttribute="top" secondItem="2eO-sZ-nQk" secondAttribute="top" constant="12" id="tP9-5g-9RB"/>
|
||||
<constraint firstAttribute="bottom" secondItem="TYD-pk-Hrj" secondAttribute="bottom" constant="12" id="uyc-Hk-XVM"/>
|
||||
<constraint firstItem="xZb-cE-pmT" firstAttribute="top" secondItem="QNa-NX-Jv7" secondAttribute="bottom" constant="10" id="xQu-UD-KuR"/>
|
||||
<constraint firstItem="xZb-cE-pmT" firstAttribute="leading" secondItem="2eO-sZ-nQk" secondAttribute="leading" constant="10" id="zJN-Y2-dxN"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="8"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="2eO-sZ-nQk" secondAttribute="bottom" id="59c-Mm-R9s"/>
|
||||
<constraint firstItem="2eO-sZ-nQk" firstAttribute="top" secondItem="k89-mp-kfb" secondAttribute="bottom" constant="16" id="8Zq-uc-eqs"/>
|
||||
<constraint firstItem="k89-mp-kfb" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="EYh-y9-4Tq"/>
|
||||
<constraint firstAttribute="trailing" secondItem="k89-mp-kfb" secondAttribute="trailing" constant="16" id="Taz-Qy-KeI"/>
|
||||
<constraint firstItem="k89-mp-kfb" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="12" id="auE-x8-0Qt"/>
|
||||
<constraint firstItem="2eO-sZ-nQk" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="cuK-3y-fHc"/>
|
||||
<constraint firstAttribute="trailing" secondItem="2eO-sZ-nQk" secondAttribute="trailing" constant="16" id="nFh-Ct-lOl"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
|
||||
<connections>
|
||||
<outlet property="cancelBtn" destination="TYD-pk-Hrj" id="Gac-yn-ujG"/>
|
||||
<outlet property="commitBtn" destination="sR8-oC-oyN" id="NHC-ja-haS"/>
|
||||
<outlet property="contentLabel" destination="xZb-cE-pmT" id="uxF-Q5-zRi"/>
|
||||
<outlet property="stateBtn" destination="Svn-Qm-TJa" id="DmT-JH-rzM"/>
|
||||
<outlet property="timeLabel" destination="k89-mp-kfb" id="C8p-G4-gfQ"/>
|
||||
<outlet property="titleLabel" destination="QNa-NX-Jv7" id="9gp-1x-ru9"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="303.05343511450383" y="85.91549295774648"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -36,6 +36,8 @@
|
||||
#import "QXRoomSingerAuthViewController.h"
|
||||
#import "QXMineSongListViewController.h"
|
||||
#import "QXIntimateViewController.h"
|
||||
#import "QXBodyPriceRuleView.h"
|
||||
#import "QXFamilyViewController.h"
|
||||
#import <WXApi.h>
|
||||
|
||||
@interface QXMineViewController ()<UITableViewDelegate,UITableViewDataSource,QXMineServiceCellDelegate,QXMainHeaderViewDelegate>
|
||||
@@ -127,6 +129,12 @@
|
||||
[self gotoSetting];
|
||||
}
|
||||
break;
|
||||
case QXMineServiceTypeFamily:{
|
||||
QXLOG(@"跳转家族");
|
||||
QXFamilyViewController *vc = [[QXFamilyViewController alloc] init];
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
break;
|
||||
case QXMineServiceTypeHelp:{
|
||||
[self gotoService];
|
||||
}
|
||||
@@ -223,6 +231,10 @@
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
break;
|
||||
case QXMainHeaderOptionTypeBodyPrice:{
|
||||
[QXBodyPriceRuleView showInView:self.view];
|
||||
}
|
||||
break;
|
||||
case QXMainHeaderOptionTypeWallet:{
|
||||
QXLOG(@"跳转钱包");
|
||||
BOOL result = [[NSUserDefaults standardUserDefaults] boolForKey:kWalletRuleHide];
|
||||
@@ -304,7 +316,7 @@
|
||||
}
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.row == 0) {
|
||||
return ScaleWidth(110);
|
||||
return ScaleWidth(168);
|
||||
}else{
|
||||
// if (QXGlobal.shareGlobal.isOpenRecharge) {
|
||||
return ScaleWidth(168);
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
[super viewWillAppear:animated];
|
||||
[self.navigationController setNavigationBarHidden:NO animated:YES];
|
||||
[self.headerView headerStartPlay];
|
||||
}
|
||||
-(void)setNavgationItems{
|
||||
[super setNavgationItems];
|
||||
@@ -91,7 +92,9 @@
|
||||
_pagingView.mainTableView.backgroundColor = [UIColor clearColor];
|
||||
self.pagingView.backgroundColor = [UIColor clearColor];
|
||||
[self.view addSubview:self.pagingView];
|
||||
|
||||
self.cycleScrollView.hidden = YES;
|
||||
self.backgourdImageView.hidden = YES;
|
||||
self.categoryView.hidden = YES;
|
||||
self.categoryView.listContainer = (id<JXCategoryViewListContainer>)self.pagingView.listContainerView;
|
||||
|
||||
// self.navigationController.interactivePopGestureRecognizer.enabled = (self.categoryView.selectedIndex == 0);
|
||||
@@ -120,6 +123,9 @@
|
||||
weakSelf.headerView.height = 243+ScaleWidth(40)+8;
|
||||
}
|
||||
[weakSelf.pagingView resizeTableHeaderViewHeightWithAnimatable:NO duration:0.1 curve:UIViewAnimationCurveLinear];
|
||||
weakSelf.cycleScrollView.hidden = NO;
|
||||
weakSelf.backgourdImageView.hidden = NO;
|
||||
weakSelf.categoryView.hidden = NO;
|
||||
NSArray *imgs;
|
||||
if (userModel.home_bgimages.length > 0) {
|
||||
imgs = [userModel.home_bgimages componentsSeparatedByString:@","];
|
||||
@@ -138,7 +144,7 @@
|
||||
weakSelf.cycleScrollView.imageURLStringsGroup = imgs;
|
||||
}
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
showToast(msg);
|
||||
}];
|
||||
}
|
||||
#pragma mark - JXPagingViewDelegate
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#import "QXMineNetwork.h"
|
||||
#import "QXSeatHeaderView.h"
|
||||
#import "QXGiftPlayerManager.h"
|
||||
#import "QXCustomAlertView.h"
|
||||
|
||||
@interface QXDressSubViewController ()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout>
|
||||
@property (nonatomic,strong)QXSeatHeaderView *headerImageView;
|
||||
@@ -46,17 +47,20 @@
|
||||
}
|
||||
|
||||
-(void)getData{
|
||||
MJWeakSelf
|
||||
@weakify(self)
|
||||
[QXMineNetwork userDressListWithType:self.model.id successBlock:^(NSArray<QXUserDressModel *> * _Nonnull list) {
|
||||
[weakSelf.dataArray removeAllObjects];
|
||||
[weakSelf.dataArray addObjectsFromArray:list];
|
||||
if (list.count > 0 ) {
|
||||
QXUserDressModel *model = [[QXUserDressModel alloc] init];
|
||||
model.title = QXText(@"无");
|
||||
model.udid = @"-1";
|
||||
[weakSelf.dataArray insertObject:model atIndex:0];
|
||||
@strongify(self);
|
||||
[self.dataArray removeAllObjects];
|
||||
[self.dataArray addObjectsFromArray:list];
|
||||
if (![self.model.id isEqualToString:@"12"]) {
|
||||
if (list.count > 0 ) {
|
||||
QXUserDressModel *model = [[QXUserDressModel alloc] init];
|
||||
model.title = QXText(@"无");
|
||||
model.udid = @"-1";
|
||||
[self.dataArray insertObject:model atIndex:0];
|
||||
}
|
||||
}
|
||||
[weakSelf.collectionView reloadData];
|
||||
[self.collectionView reloadData];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
}];
|
||||
@@ -76,8 +80,8 @@
|
||||
return cell;
|
||||
}
|
||||
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
int width = (SCREEN_WIDTH-15*2-22*2-1)/3;
|
||||
return CGSizeMake(width, width/100*120);
|
||||
int width = (SCREEN_WIDTH-16*2-15*2-1)/3;
|
||||
return CGSizeMake((int)width, ScaleWidth(136));
|
||||
}
|
||||
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.row == self.selectedIndex) {
|
||||
@@ -96,23 +100,45 @@
|
||||
}
|
||||
|
||||
-(void)commitAction{
|
||||
if (self.selectedIndex == -1) {
|
||||
return;
|
||||
}
|
||||
QXUserDressModel *model = self.dataArray[self.selectedIndex];
|
||||
if ([self.model.id isEqualToString:@"12"]) {
|
||||
@weakify(self);
|
||||
QXCustomAlertView *al = [[QXCustomAlertView alloc] init];
|
||||
[al showInView:self.view title:@"温馨提示" message:[NSString stringWithFormat:@"亲爱的羽声用户,您好~ 您是否确认使用%@,本次使用后 您的身价会降至原身价的%@%%",model.title,model.ext_value] cancleTitle:@"取消" commitTitle:@"确认"];
|
||||
al.commitBlock = ^{
|
||||
@strongify(self);
|
||||
[self commitNetworkWithModel:model];
|
||||
};
|
||||
return;
|
||||
}
|
||||
|
||||
[self commitNetworkWithModel:model];
|
||||
}
|
||||
|
||||
-(void)commitNetworkWithModel:(QXUserDressModel*)model{
|
||||
BOOL isCancel = NO;
|
||||
if ([model.udid isEqualToString:@"-1"]) {
|
||||
isCancel = YES;
|
||||
}else{
|
||||
isCancel = NO;
|
||||
}
|
||||
MJWeakSelf
|
||||
@weakify(self);
|
||||
[QXMineNetwork setUserDressIsCancel:isCancel udid:model.udid type:self.model.id successBlock:^(NSDictionary * _Nonnull dict) {
|
||||
if (weakSelf.model.id.intValue == 1) {
|
||||
@strongify(self);
|
||||
if (self.model.id.intValue == 1) {
|
||||
[QXGlobal shareGlobal].loginModel.dress = model.play_image;
|
||||
}
|
||||
if (weakSelf.model.id.intValue == 9) {
|
||||
if (self.model.id.intValue == 9) {
|
||||
[QXGlobal shareGlobal].loginModel.chat_bubble = model.base_image;
|
||||
}
|
||||
[[QXGlobal shareGlobal] updateUserInfoWithMolde:[QXGlobal shareGlobal].loginModel];
|
||||
showToast(@"设置成功");
|
||||
if (self.model.id.intValue == 12) {
|
||||
[self getData];
|
||||
}
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
showToast(msg);
|
||||
}];
|
||||
@@ -135,9 +161,9 @@
|
||||
-(UICollectionView *)collectionView{
|
||||
if (!_collectionView) {
|
||||
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||
layout.minimumLineSpacing = 22;
|
||||
layout.minimumInteritemSpacing = 22;
|
||||
layout.sectionInset = UIEdgeInsetsMake(0, 15, 0, 15);
|
||||
layout.minimumLineSpacing = 15;
|
||||
layout.minimumInteritemSpacing = 15;
|
||||
layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16);
|
||||
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, self.headerImageView.bottom+12+12, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight) collectionViewLayout:layout];
|
||||
_collectionView.delegate = self;
|
||||
_collectionView.dataSource = self;
|
||||
|
||||
@@ -6,17 +6,240 @@
|
||||
//
|
||||
|
||||
#import "QXHeartBeatSpaceViewController.h"
|
||||
#import "QXMineNetwork.h"
|
||||
#import "QXHeartBeatSpaceRecordCell.h"
|
||||
#import "QXHeartBeatLevelRuleView.h"
|
||||
#import "QXUserCpDressView.h"
|
||||
|
||||
@interface QXHeartBeatSpaceViewController ()<UITableViewDelegate,UITableViewDataSource>
|
||||
@property (nonatomic,strong)UIImageView *topImageView;
|
||||
@property (nonatomic,strong)UIImageView *titleImageView;
|
||||
@property (nonatomic,strong)UIImageView *flyImageView;
|
||||
@property (nonatomic,strong)QXSeatHeaderView *leftHeaderView;
|
||||
@property (nonatomic,strong)UIImageView *heartImageView;
|
||||
@property (nonatomic,strong)QXSeatHeaderView *rightHeaderView;
|
||||
@property (nonatomic,strong)UILabel *timeLabel;
|
||||
|
||||
@property (nonatomic,strong)UIView *recordContentView;
|
||||
@property (nonatomic,strong)UIView *expView;
|
||||
@property (nonatomic,strong)UILabel *expLabel;
|
||||
@property (nonatomic,strong)UITableView *tableView;
|
||||
@property (nonatomic,strong)UIImageView *cpDressBgImageView;
|
||||
@property (nonatomic,strong)QXUserCpDressView *cpDressView;
|
||||
|
||||
@interface QXHeartBeatSpaceViewController ()
|
||||
|
||||
@end
|
||||
|
||||
@implementation QXHeartBeatSpaceViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
self.isNoChangeBgImage = YES;
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
[super viewWillAppear:animated];
|
||||
[self.navigationController setNavigationBarHidden:NO animated:YES];
|
||||
}
|
||||
-(void)setNavgationItems{
|
||||
[super setNavgationItems];
|
||||
UIButton*recordBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)];
|
||||
[recordBtn setImage:[UIImage imageNamed:@"nobility_help_icon"] forState:(UIControlStateNormal)];
|
||||
recordBtn.titleLabel.font = [UIFont systemFontOfSize:16];
|
||||
[recordBtn addTarget:self action:@selector(helpAction) forControlEvents:(UIControlEventTouchUpInside)];
|
||||
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:recordBtn];
|
||||
}
|
||||
- (void)initSubViews{
|
||||
[self updateBackImage:[UIImage imageNamed:@"mine_intimate_back"]];
|
||||
self.page = 1;
|
||||
self.view.backgroundColor = RGB16(0xBF8BFA);
|
||||
self.topImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_heart_beat_space_bg"]];
|
||||
self.topImageView.frame = CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(336));
|
||||
[self.view addSubview:self.topImageView];
|
||||
|
||||
|
||||
|
||||
|
||||
self.titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_heart_beat_title"]];
|
||||
self.titleImageView.frame = CGRectMake((SCREEN_WIDTH-ScaleWidth(199))/2, ScaleWidth(48), ScaleWidth(199), ScaleWidth(87));
|
||||
[self.view addSubview:self.titleImageView];
|
||||
|
||||
self.flyImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_heart_beat_fly"]];
|
||||
self.flyImageView.frame = CGRectMake((self.view.width-ScaleWidth(328))/2, self.titleImageView.top+ScaleWidth(24), ScaleWidth(328), ScaleWidth(184));
|
||||
[self.view addSubview:self.flyImageView];
|
||||
|
||||
|
||||
self.leftHeaderView = [[QXSeatHeaderView alloc] initWithFrame:CGRectMake(SCREEN_WIDTH/2-ScaleWidth(72), self.titleImageView.bottom+ScaleWidth(26), ScaleWidth(72), ScaleWidth(72))];
|
||||
[self.leftHeaderView addRoundedCornersWithRadius:ScaleWidth(36)];
|
||||
self.leftHeaderView.layer.borderWidth = 2;
|
||||
self.leftHeaderView.layer.borderColor = RGB16(0xffffff).CGColor;
|
||||
[self.view addSubview:self.leftHeaderView];
|
||||
|
||||
|
||||
self.rightHeaderView = [[QXSeatHeaderView alloc] initWithFrame:CGRectMake(self.leftHeaderView.right, self.titleImageView.bottom+ScaleWidth(26), ScaleWidth(72), ScaleWidth(72))];
|
||||
[self.rightHeaderView addRoundedCornersWithRadius:ScaleWidth(36)];
|
||||
self.rightHeaderView.layer.borderWidth = 2;
|
||||
self.rightHeaderView.layer.borderColor = RGB16(0xffffff).CGColor;
|
||||
[self.view addSubview:self.rightHeaderView];
|
||||
|
||||
|
||||
self.heartImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_heart_beat_heart_icon"]];
|
||||
self.heartImageView.frame = CGRectMake(SCREEN_WIDTH/2-ScaleWidth(26/2), 0, ScaleWidth(26), ScaleWidth(26));
|
||||
[self.view addSubview:self.heartImageView];
|
||||
|
||||
self.heartImageView.centerY = self.leftHeaderView.centerY;
|
||||
|
||||
self.timeLabel = [[UILabel alloc] init];
|
||||
self.timeLabel.font = [UIFont systemFontOfSize:14];
|
||||
self.timeLabel.textColor = RGB16(0xffffff);
|
||||
self.timeLabel.backgroundColor = RGB16A(0x0300C8,0.35);
|
||||
[self.timeLabel addRoundedCornersWithRadius:11.5];
|
||||
[self.view addSubview:self.timeLabel];
|
||||
|
||||
self.recordContentView = [[UIView alloc] initWithFrame:CGRectMake(16, self.topImageView.bottom-ScaleWidth(20), SCREEN_WIDTH-32, self.view.height-self.topImageView.bottom-ScaleWidth(20))];
|
||||
self.recordContentView.backgroundColor = RGB16(0xffffff);
|
||||
[self.recordContentView addRoundedCornersWithRadius:12];
|
||||
|
||||
|
||||
self.expView = [[UIView alloc] initWithFrame:CGRectMake(14, 14, self.recordContentView.width-28, ScaleWidth(89))];
|
||||
[self.recordContentView addSubview:self.expView];
|
||||
|
||||
UIImageView *expImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_heart_beat_exp_bg"]];
|
||||
expImageView.frame = self.expView.bounds;
|
||||
[self.expView addSubview:expImageView];
|
||||
|
||||
self.expLabel = [[UILabel alloc] initWithFrame:CGRectMake(127, (self.expView.height-32)/2, self.expView.width-127-10, 32)];
|
||||
self.expLabel.textColor = RGB16(0xffffff);
|
||||
self.expLabel.font = [UIFont systemFontOfSize:16];
|
||||
[self.expView addSubview:self.expLabel];
|
||||
|
||||
[self.recordContentView addSubview:self.tableView];
|
||||
[self.view addSubview:self.recordContentView];
|
||||
// user_heart_beat_exp_bg
|
||||
self.cpDressBgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"heart_beat_space_dress_bg"]];
|
||||
self.cpDressBgImageView.frame = CGRectMake(self.view.width-ScaleWidth(115), 0, ScaleWidth(115), ScaleWidth(210));
|
||||
[self.view addSubview:self.cpDressBgImageView];
|
||||
self.cpDressBgImageView.centerY = self.leftHeaderView.centerY;
|
||||
// [self.cpDressBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
// make.right.equalTo(self.view);
|
||||
// make.centerY.equalTo(self.leftHeaderView);
|
||||
// make.width.mas_equalTo(ScaleWidth(115));
|
||||
// make.height.mas_equalTo(ScaleWidth(210));
|
||||
// }];
|
||||
|
||||
self.cpDressView = [[QXUserCpDressView alloc] initWithFrame:self.cpDressBgImageView.frame];
|
||||
[self.cpDressView hideHeader];
|
||||
[self.view addSubview:self.cpDressView];
|
||||
// [self.cpDressView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
// make.edges.equalTo(self.cpDressBgImageView);
|
||||
// }];
|
||||
self.cpDressView.hidden = YES;
|
||||
self.cpDressBgImageView.hidden = YES;
|
||||
}
|
||||
|
||||
-(void)helpAction{
|
||||
QXHeartBeatLevelRuleView *view = [[QXHeartBeatLevelRuleView alloc] init];
|
||||
NSString *urlStr = [NSString stringWithFormat:@"%@api/Page/page_show?id=31",ServerUrl];
|
||||
view.rule = urlStr;
|
||||
[view showInView:self.view];
|
||||
}
|
||||
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
self.page = 1;
|
||||
[self getList];
|
||||
}
|
||||
-(void)getList{
|
||||
MJWeakSelf
|
||||
[QXMineNetwork heartBeatUserInfoWithUserId:self.userId page:self.page successBlock:^(QXUserCpInfoModel * _Nonnull model) {
|
||||
if (weakSelf.page == 1) {
|
||||
if ([model.user_info1.user_id isEqualToString:weakSelf.userId]) {
|
||||
[weakSelf.leftHeaderView setHeadIcon:model.user_info1.avatar dress:model.user_info1.dress];
|
||||
[weakSelf.rightHeaderView setHeadIcon:model.user_info2.avatar dress:model.user_info2.dress];
|
||||
}else{
|
||||
[weakSelf.leftHeaderView setHeadIcon:model.user_info2.avatar dress:model.user_info2.dress];
|
||||
[weakSelf.rightHeaderView setHeadIcon:model.user_info1.avatar dress:model.user_info1.dress];
|
||||
}
|
||||
if ([model.pendant isExist]) {
|
||||
weakSelf.cpDressView.hidden = NO;
|
||||
weakSelf.cpDressBgImageView.hidden = NO;
|
||||
weakSelf.cpDressView.model = model;
|
||||
}
|
||||
|
||||
NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
|
||||
long long milliseconds = (long long)(currentTime);
|
||||
NSInteger time = milliseconds - model.createtime.longLongValue;
|
||||
weakSelf.timeLabel.text = [NSString stringWithFormat:@" 我们在一起%@啦 ",[NSString getTimeWithDay:time]];
|
||||
[weakSelf.timeLabel sizeToFit];
|
||||
weakSelf.timeLabel.centerX = weakSelf.topImageView.centerX;
|
||||
weakSelf.timeLabel.height = 21;
|
||||
weakSelf.timeLabel.top = weakSelf.leftHeaderView.bottom+ScaleWidth(21);
|
||||
if (model.next_level_exp.integerValue <=0 ) {
|
||||
weakSelf.expLabel.text = @"当前已是最高等级";
|
||||
}else{
|
||||
NSString *expString = [NSString stringWithFormat:@"还需%@经验升级",model.next_level_exp];
|
||||
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:expString];
|
||||
[attr yy_setFont:[UIFont fontWithName:@"DIN Condensed" size:32] range:[expString rangeOfString:model.next_level_exp]];
|
||||
[attr yy_setColor:RGB16(0xFFF022) range:[expString rangeOfString:model.next_level_exp]];
|
||||
weakSelf.expLabel.attributedText = attr;
|
||||
}
|
||||
[weakSelf.dataArray removeAllObjects];
|
||||
}
|
||||
[weakSelf.dataArray addObjectsFromArray:model.gift_log];
|
||||
[weakSelf.tableView reloadData];
|
||||
if (model.gift_log.count == 0) {
|
||||
weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
}else{
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
showToast(msg);
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
[weakSelf.navigationController popViewControllerAnimated:YES];
|
||||
});
|
||||
}];
|
||||
}
|
||||
|
||||
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
||||
return self.dataArray.count;
|
||||
}
|
||||
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXHeartBeatSpaceRecordCell *cell = [QXHeartBeatSpaceRecordCell cellWithTableView:tableView];
|
||||
cell.userId = self.userId;
|
||||
cell.model = self.dataArray[indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
|
||||
-(UITableView *)tableView{
|
||||
if (!_tableView) {
|
||||
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(14,self.expView.bottom+6,self.recordContentView.width-28,self.recordContentView.height-self.expView.bottom-14-6) style:(UITableViewStylePlain)];
|
||||
_tableView.dataSource = self;
|
||||
_tableView.delegate = self;
|
||||
_tableView.backgroundColor = RGB16(0xF4F4F4);
|
||||
[_tableView addRoundedCornersWithRadius:12];
|
||||
_tableView.tableFooterView = [UIView new];
|
||||
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
||||
_tableView.rowHeight = UITableViewAutomaticDimension;
|
||||
_tableView.showsVerticalScrollIndicator = NO;
|
||||
_tableView.showsHorizontalScrollIndicator = NO;
|
||||
if (@available(iOS 15.0, *)) {
|
||||
_tableView.sectionHeaderTopPadding = 0;
|
||||
} else {
|
||||
// Fallback on earlier versions
|
||||
}
|
||||
MJWeakSelf
|
||||
_tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
|
||||
weakSelf.page = 1;
|
||||
[weakSelf getList];
|
||||
}];
|
||||
_tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
|
||||
weakSelf.page++;
|
||||
[weakSelf getList];
|
||||
}];
|
||||
}
|
||||
return _tableView;
|
||||
}
|
||||
@end
|
||||
|
||||
@@ -14,8 +14,9 @@
|
||||
#import "QXMoreIntimateViewController.h"
|
||||
#import "QXIntimateMoreListCell.h"
|
||||
#import "QXHeartBeatSpaceViewController.h"
|
||||
#import "QXUserHomePageViewController.h"
|
||||
|
||||
@interface QXIntimateViewController ()<UITableViewDataSource,UITableViewDelegate>
|
||||
@interface QXIntimateViewController ()<UITableViewDataSource,UITableViewDelegate,QXUserCpCardViewDelegate,QXIntimateMoreListCellDelegate>
|
||||
@property (nonatomic,strong)UITableView *tableView;
|
||||
@property (nonatomic,strong)QXRoomBestFriendModel *model;
|
||||
@end
|
||||
@@ -79,6 +80,7 @@
|
||||
QXMoreIntimateViewController *vc = [[QXMoreIntimateViewController alloc] init];
|
||||
vc.userId = self.userId;
|
||||
vc.relation_id = md.relation_list.firstObject.relation_id;
|
||||
vc.relation_name = md.relation_name;
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
|
||||
@@ -98,7 +100,9 @@
|
||||
if (indexPath.section == 0) {
|
||||
if (self.model.cp) {
|
||||
QXIntimateCpCell *cell = [QXIntimateCpCell cellWithTableView:tableView];
|
||||
cell.userId = self.userId;
|
||||
cell.model = self.model.cp;
|
||||
cell.delegate = self;
|
||||
return cell;
|
||||
}else{
|
||||
QXIntimateNoCpCell *cell = [QXIntimateNoCpCell cellWithTableView:tableView];
|
||||
@@ -108,6 +112,7 @@
|
||||
QXRoomBestFriendListModel *md = self.dataArray[indexPath.section-1];
|
||||
if (md.relation_list.count > 1) {
|
||||
QXIntimateListCell*cell = [QXIntimateListCell cellWithTableView:tableView];
|
||||
cell.userId = self.userId;
|
||||
if (self.dataArray.count>0) {
|
||||
QXRoomBestFriendListModel *md = self.dataArray[indexPath.section-1];
|
||||
cell.model = md;
|
||||
@@ -116,8 +121,10 @@
|
||||
}else{
|
||||
MJWeakSelf
|
||||
QXIntimateMoreListCell *cell = [QXIntimateMoreListCell cellWithTableView:tableView];
|
||||
cell.userId = self.userId;
|
||||
QXRoomBestFriendListModel *md = self.dataArray.firstObject;
|
||||
cell.model = md.relation_list.firstObject;
|
||||
cell.delegate = self;
|
||||
cell.deleteSuccessBlock = ^(QXRelationshipListModel * _Nonnull model) {
|
||||
weakSelf.page = 1;
|
||||
[weakSelf getList];
|
||||
@@ -184,13 +191,13 @@
|
||||
}
|
||||
}else{
|
||||
QXRoomBestFriendListModel *md = self.dataArray[indexPath.section-1];
|
||||
if (md.relation_list.count > 1) {
|
||||
if (md.relation_list.count == 1) {
|
||||
return ScaleWidth(92)+18;
|
||||
}else{
|
||||
if (md.relation_list.count == 0) {
|
||||
return 0;
|
||||
}else{
|
||||
return ScaleWidth(100)+16;
|
||||
return ScaleWidth(125);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,14 +213,35 @@
|
||||
return 15;
|
||||
}
|
||||
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.section == 0) {
|
||||
if (self.model.cp) {
|
||||
QXHeartBeatSpaceViewController *vc = [[QXHeartBeatSpaceViewController alloc] init];
|
||||
vc.userId = self.userId;
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
// if (indexPath.section == 0) {
|
||||
// if (self.model.cp) {
|
||||
// QXHeartBeatSpaceViewController *vc = [[QXHeartBeatSpaceViewController alloc] init];
|
||||
// vc.userId = self.userId;
|
||||
// [self.navigationController pushViewController:vc animated:YES];
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
-(void)didClickHeaderCardViewWithUserId:(NSString *)userId{
|
||||
if (self.model.cp) {
|
||||
QXHeartBeatSpaceViewController *vc = [[QXHeartBeatSpaceViewController alloc] init];
|
||||
vc.userId = self.userId;
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)didClickHeaderViewUserId:(NSString *)userId{
|
||||
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
|
||||
vc.user_id = userId;
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
|
||||
}
|
||||
- (void)didClickHeaderWithUserId:(NSString *)userId{
|
||||
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
|
||||
vc.user_id = userId;
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
|
||||
-(UITableView *)tableView{
|
||||
if (!_tableView) {
|
||||
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, NavContentHeight+ScaleWidth(68), SCREEN_WIDTH, SCREEN_HEIGHT -NavContentHeight-ScaleWidth(68)) style:(UITableViewStyleGrouped)];
|
||||
|
||||
@@ -12,6 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@interface QXMoreIntimateViewController : QXBaseViewController
|
||||
@property (nonatomic,strong)NSString *userId;
|
||||
@property (nonatomic,strong)NSString *relation_id;
|
||||
@property (nonatomic,strong)NSString *relation_name;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -16,9 +16,30 @@
|
||||
@implementation QXMoreIntimateViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
self.isNoChangeBgImage = YES;
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
[super viewWillAppear:animated];
|
||||
[self.navigationController setNavigationBarHidden:NO animated:YES];
|
||||
}
|
||||
-(void)initSubViews{
|
||||
[super initSubViews];
|
||||
self.page = 1;
|
||||
[self updateBgImage:@"mine_intimate_bg"];
|
||||
[self updateBackImage:[UIImage imageNamed:@"mine_intimate_back"]];
|
||||
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_intimate_title_img"]];
|
||||
[self.view addSubview:titleImageView];
|
||||
[titleImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.equalTo(self.view);
|
||||
make.width.mas_equalTo(ScaleWidth(178));
|
||||
make.height.mas_equalTo(ScaleWidth(68));
|
||||
make.top.mas_equalTo(NavContentHeight);
|
||||
}];
|
||||
[self.view addSubview:self.tableView];
|
||||
|
||||
}
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
}
|
||||
@@ -33,6 +54,7 @@
|
||||
}
|
||||
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXIntimateMoreListCell *cell = [QXIntimateMoreListCell cellWithTableView:tableView];
|
||||
cell.userId = self.userId;
|
||||
cell.model = self.dataArray[indexPath.row];
|
||||
MJWeakSelf
|
||||
cell.topSuccessBlock = ^(QXRelationshipListModel * _Nonnull model) {
|
||||
@@ -46,7 +68,29 @@
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
return ScaleWidth(92)+16;
|
||||
}
|
||||
|
||||
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
|
||||
UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, 50)];
|
||||
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_intimate_title_bg"]];
|
||||
UILabel *titleLabel = [[UILabel alloc] init];
|
||||
titleLabel.font = [UIFont boldSystemFontOfSize:16];
|
||||
titleLabel.textColor = RGB16(0xffffff);
|
||||
[header addSubview:imageView];
|
||||
[header addSubview:titleLabel];
|
||||
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(132);
|
||||
make.height.mas_equalTo(36);
|
||||
make.centerX.centerY.equalTo(header);
|
||||
}];
|
||||
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.equalTo(header);
|
||||
make.centerY.equalTo(header).offset(2);
|
||||
}];
|
||||
titleLabel.text = self.relation_name;
|
||||
return header;
|
||||
}
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
|
||||
return 50;
|
||||
}
|
||||
-(void)getList{
|
||||
MJWeakSelf
|
||||
[QXMineNetwork userBestFriendsMoreListWithUserId:self.userId relation_id:self.relation_id successBlock:^(NSArray<QXRelationshipListModel *> * _Nonnull model) {
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// QXFamilyPriceRecordViewController.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXBaseViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXFamilyPriceRecordViewController : QXBaseViewController
|
||||
@property (nonatomic,strong)NSString *userId;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
@@ -0,0 +1,129 @@
|
||||
//
|
||||
// QXFamilyPriceRecordViewController.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXFamilyPriceRecordViewController.h"
|
||||
#import "QXWalletDateView.h"
|
||||
#import "QXFamilyPriceRecordCell.h"
|
||||
#import "QXMineNetwork.h"
|
||||
|
||||
@interface QXFamilyPriceRecordViewController ()<QXWalletDateViewDelegate,UITableViewDelegate,UITableViewDataSource>
|
||||
@property (nonatomic,strong)UIView *contentView;
|
||||
@property (nonatomic,strong)UITableView *tableView;
|
||||
@property (nonatomic,strong)QXWalletDateView *dateView;
|
||||
|
||||
@property (nonatomic,strong)NSString* startTime;
|
||||
@property (nonatomic,strong)NSString* endTime;
|
||||
@end
|
||||
|
||||
@implementation QXFamilyPriceRecordViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
[super viewWillAppear:animated];
|
||||
[self.navigationController setNavigationBarHidden:NO animated:YES];
|
||||
}
|
||||
-(void)setNavgationItems{
|
||||
[super setNavgationItems];
|
||||
self.navigationItem.title = QXText(@"总收益");
|
||||
}
|
||||
-(void)initSubViews{
|
||||
self.page = 1;
|
||||
UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(16, NavContentHeight+12, SCREEN_WIDTH-32, SCREEN_HEIGHT-NavContentHeight-12)];
|
||||
[contentView addRoundedCornersWithRadius:16];
|
||||
contentView.backgroundColor = RGB16(0xffffff);
|
||||
self.contentView = contentView;
|
||||
[self.view addSubview:contentView];
|
||||
|
||||
[contentView addSubview:self.dateView];
|
||||
[contentView addSubview:self.tableView];
|
||||
}
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
self.page = 1;
|
||||
[self getList];
|
||||
}
|
||||
-(void)getList{
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[QXMineNetwork getFamilyEarningWithUserId:self.userId successBlock:^(NSArray<QXFamilyEarningModel *> * _Nonnull list) {
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) {
|
||||
NSLog(@"⚠️ self has been deallocated, skipping hide operation");
|
||||
return;
|
||||
}
|
||||
if (strongSelf.page == 1) {
|
||||
[strongSelf.dataArray removeAllObjects];
|
||||
}
|
||||
[strongSelf.dataArray addObjectsFromArray:list];
|
||||
[strongSelf.tableView reloadData];
|
||||
if (list.count == 0) {
|
||||
strongSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
}else{
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (strongSelf) {
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
});
|
||||
}];
|
||||
//
|
||||
// }];
|
||||
}
|
||||
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
||||
return self.dataArray.count;
|
||||
}
|
||||
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXFamilyPriceRecordCell *cell = [QXFamilyPriceRecordCell cellWithTableView:tableView];
|
||||
cell.model = self.dataArray[indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
#pragma mark - QXWalletDateViewDelegate
|
||||
-(void)didSelectedStartDate:(NSString *)startDateString startDate:(NSDate *)startDate endDateString:(NSString *)endDateString endDate:(NSDate *)endDate{
|
||||
QXLOG(@"开始时间-%@ 结束时间-%@",startDateString,endDateString);
|
||||
self.startTime = startDateString;
|
||||
self.endTime = endDateString;
|
||||
self.page = 1;
|
||||
[self getList];
|
||||
}
|
||||
|
||||
|
||||
-(QXWalletDateView *)dateView{
|
||||
if (!_dateView) {
|
||||
_dateView = [[QXWalletDateView alloc] initWithFrame:CGRectMake(12, 12, SCREEN_WIDTH-32-24, 38)];
|
||||
_dateView.delegate = self;
|
||||
}
|
||||
return _dateView;
|
||||
}
|
||||
-(UITableView *)tableView{
|
||||
if (!_tableView) {
|
||||
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, self.dateView.bottom+10, SCREEN_WIDTH-32, self.contentView.height - self.dateView.bottom-10) style:(UITableViewStylePlain)];
|
||||
_tableView.dataSource = self;
|
||||
_tableView.delegate = self;
|
||||
_tableView.backgroundColor = [UIColor whiteColor];
|
||||
_tableView.tableFooterView = [UIView new];
|
||||
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
||||
_tableView.rowHeight = 107;
|
||||
MJWeakSelf
|
||||
_tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
|
||||
weakSelf.page = 1;
|
||||
[weakSelf getList];
|
||||
}];
|
||||
_tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
|
||||
weakSelf.page++;
|
||||
[weakSelf getList];
|
||||
}];
|
||||
}
|
||||
return _tableView;
|
||||
}
|
||||
@end
|
||||
17
QXLive/Mine(音域)/Controller/家族/QXFamilySubViewController.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// QXFamilySubViewController.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXBaseViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXFamilySubViewController : QXBaseViewController<JXCategoryListContentViewDelegate>
|
||||
@property (nonatomic,assign)NSInteger index;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
145
QXLive/Mine(音域)/Controller/家族/QXFamilySubViewController.m
Normal file
@@ -0,0 +1,145 @@
|
||||
//
|
||||
// QXFamilySubViewController.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXFamilySubViewController.h"
|
||||
#import "QXFamilyMemberCell.h"
|
||||
#import "QXFamilyTopCell.h"
|
||||
#import "QXMineNetwork.h"
|
||||
@interface QXFamilySubViewController ()<UITableViewDelegate,UITableViewDataSource>
|
||||
@property (nonatomic,strong)UITableView *tableView;
|
||||
@property (nonatomic,strong)QXFamilyModel *model;
|
||||
|
||||
@end
|
||||
|
||||
@implementation QXFamilySubViewController
|
||||
-(UIView *)listView{
|
||||
return self.view;
|
||||
}
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
- (void)initSubViews{
|
||||
self.bgImageHidden = YES;
|
||||
self.view.backgroundColor = RGB16(0x102477);
|
||||
[self.view addSubview:self.tableView];
|
||||
}
|
||||
-(void)viewDidLayoutSubviews{
|
||||
[super viewDidLayoutSubviews];
|
||||
_tableView.frame = self.view.bounds;
|
||||
}
|
||||
|
||||
-(void)setIndex:(NSInteger)index{
|
||||
_index = index;
|
||||
[self getList];
|
||||
}
|
||||
-(void)getList{
|
||||
BOOL isJoin = YES;
|
||||
if (self.index == 0) {
|
||||
isJoin = YES;
|
||||
}else{
|
||||
isJoin = NO;
|
||||
}
|
||||
MJWeakSelf
|
||||
[QXMineNetwork getMyFamilyIsJoin:isJoin successBlock:^(QXFamilyModel * _Nonnull model) {
|
||||
weakSelf.model = model;
|
||||
[weakSelf.tableView reloadData];
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
}];
|
||||
}
|
||||
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
|
||||
if (self.model) {
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
||||
if (section == 0) {
|
||||
return 1;
|
||||
}else{
|
||||
return self.model.group_members_lists.count;
|
||||
}
|
||||
}
|
||||
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.section == 0) {
|
||||
QXFamilyTopCell *cell = [QXFamilyTopCell cellWithTableView:tableView];
|
||||
cell.model = self.model;
|
||||
return cell;
|
||||
}else{
|
||||
QXFamilyMemberCell *cell = [QXFamilyMemberCell cellWithTableView:tableView];
|
||||
cell.model = self.model.group_members_lists[indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
}
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.section == 0) {
|
||||
return 180;
|
||||
}else{
|
||||
return 176;
|
||||
}
|
||||
}
|
||||
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
|
||||
if (section == 0) {
|
||||
return [UIView new];
|
||||
}else{
|
||||
UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.width, 50)];
|
||||
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"family_list_section_bg"]];
|
||||
UILabel *titleLabel = [[UILabel alloc] init];
|
||||
titleLabel.font = [UIFont boldSystemFontOfSize:16];
|
||||
titleLabel.textColor = RGB16(0xffffff);
|
||||
[header addSubview:imageView];
|
||||
[header addSubview:titleLabel];
|
||||
[imageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.mas_equalTo(132);
|
||||
make.height.mas_equalTo(36);
|
||||
make.centerX.centerY.equalTo(header);
|
||||
}];
|
||||
titleLabel.text = @"家族成员";
|
||||
[titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.equalTo(header);
|
||||
make.centerY.equalTo(header).offset(2);
|
||||
}];
|
||||
return header;
|
||||
}
|
||||
}
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
|
||||
if (section == 0) {
|
||||
return 0;
|
||||
}
|
||||
return 50;
|
||||
}
|
||||
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
|
||||
return [UIView new];
|
||||
}
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
|
||||
return 0;
|
||||
}
|
||||
|
||||
-(UITableView *)tableView{
|
||||
if (!_tableView) {
|
||||
_tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.view.height) style:(UITableViewStyleGrouped)];
|
||||
_tableView.dataSource = self;
|
||||
_tableView.delegate = self;
|
||||
_tableView.backgroundColor = [UIColor clearColor];
|
||||
_tableView.tableFooterView = [UIView new];
|
||||
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
|
||||
if (@available(iOS 15.0, *)) {
|
||||
_tableView.sectionHeaderTopPadding = 0;
|
||||
} else {
|
||||
// Fallback on earlier versions
|
||||
}
|
||||
MJWeakSelf
|
||||
_tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
|
||||
[weakSelf getList];
|
||||
}];
|
||||
}
|
||||
return _tableView;
|
||||
}
|
||||
|
||||
@end
|
||||
16
QXLive/Mine(音域)/Controller/家族/QXFamilyViewController.h
Normal file
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// QXFamilyViewController.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXBaseViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXFamilyViewController : QXBaseViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
88
QXLive/Mine(音域)/Controller/家族/QXFamilyViewController.m
Normal file
@@ -0,0 +1,88 @@
|
||||
//
|
||||
// QXFamilyViewController.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXFamilyViewController.h"
|
||||
#import "QXFamilySubViewController.h"
|
||||
|
||||
@interface QXFamilyViewController ()<JXCategoryViewDelegate,JXCategoryListContainerViewDelegate>
|
||||
@property (nonatomic,strong)UIImageView *topImageView;
|
||||
@property (nonatomic,strong)JXCategoryTitleView *categoryView;
|
||||
@property (nonatomic,strong)JXCategoryListContainerView *containerView;
|
||||
@property (nonatomic,strong)NSMutableArray *titles;
|
||||
@end
|
||||
|
||||
@implementation QXFamilyViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
self.isNoChangeBgImage = YES;
|
||||
[super viewDidLoad];
|
||||
// Do any additional setup after loading the view.
|
||||
}
|
||||
|
||||
-(void)viewWillAppear:(BOOL)animated{
|
||||
[super viewWillAppear:animated];
|
||||
[self.navigationController setNavigationBarHidden:NO animated:YES];
|
||||
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:RGB16(0xffffff)};
|
||||
}
|
||||
-(void)viewWillDisappear:(BOOL)animated{
|
||||
[super viewWillDisappear:animated];
|
||||
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:RGB16(0x000000)};
|
||||
}
|
||||
-(void)setNavgationItems{
|
||||
[super setNavgationItems];
|
||||
self.navigationItem.title = QXText(@"家族");
|
||||
self.navigationTintColor = RGB16(0xffffff);
|
||||
}
|
||||
- (void)initSubViews{
|
||||
self.titles = [NSMutableArray arrayWithArray:@[@"我的家族",@"我加入的家族"]];
|
||||
self.topImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"mine_family_top_bg"]];
|
||||
self.topImageView.frame = CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(435));
|
||||
[self.view addSubview:self.topImageView];
|
||||
self.view.backgroundColor = RGB16(0x102477);
|
||||
|
||||
self.categoryView = [[JXCategoryTitleView alloc] init];
|
||||
self.categoryView.frame = CGRectMake((self.view.width-246)/2, NavContentHeight+ScaleWidth(236), 246, 38);
|
||||
self.categoryView.delegate = self;
|
||||
self.categoryView.titles = self.titles;
|
||||
self.categoryView.backgroundColor = RGB16A(0x000000, 0.2);
|
||||
[self.categoryView addRoundedCornersWithRadius:19];
|
||||
self.categoryView.titleSelectedColor = [UIColor colorWithHexString:@"#333333"];
|
||||
self.categoryView.titleColor = [UIColor colorWithHexString:@"#ffffff"];
|
||||
self.categoryView.cellWidth = 123;
|
||||
self.categoryView.contentEdgeInsetLeft = 0;
|
||||
self.categoryView.cellSpacing = 0;
|
||||
self.categoryView.contentEdgeInsetLeft = 0;
|
||||
// self.categoryView.titleLabelZoomScale = 1.1;
|
||||
// self.categoryView.titleLabelZoomEnabled = YES;
|
||||
self.categoryView.titleFont = [UIFont boldSystemFontOfSize:14];
|
||||
self.categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:14];
|
||||
self.categoryView.averageCellSpacingEnabled = NO;
|
||||
JXCategoryIndicatorBackgroundView *indicatorView = [[JXCategoryIndicatorBackgroundView alloc] init];
|
||||
indicatorView.indicatorWidth = 123;
|
||||
indicatorView.indicatorHeight = 38;
|
||||
indicatorView.indicatorCornerRadius = 19;
|
||||
indicatorView.indicatorColor = RGB16(0xA4FFB8);
|
||||
self.categoryView.indicators = @[indicatorView];
|
||||
self.containerView = [[JXCategoryListContainerView alloc] initWithType:(JXCategoryListContainerType_CollectionView) delegate:self];
|
||||
self.containerView.frame = CGRectMake(0, self.categoryView.bottom+8, SCREEN_WIDTH, SCREEN_HEIGHT-self.categoryView.bottom-8);
|
||||
[self.view addSubview:self.categoryView];
|
||||
[self.view addSubview:self.containerView];
|
||||
self.categoryView.listContainer = self.containerView;
|
||||
}
|
||||
-(NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{
|
||||
return self.titles.count;
|
||||
}
|
||||
-(id<JXCategoryListContentViewDelegate>)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{
|
||||
QXFamilySubViewController *vc = [[QXFamilySubViewController alloc] init];
|
||||
vc.index = index;
|
||||
return vc;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@end
|
||||
@@ -57,14 +57,19 @@
|
||||
[self.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
-(void)getPriceData{
|
||||
MJWeakSelf
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[QXMineNetwork roomWaterDetailWithRoomId:self.room_id start_time:self.startTime end_time:self.endTime page:self.page type:self.type successBlock:^(QXRoomDetailModel * _Nonnull model) {
|
||||
weakSelf.headerView.model = model;
|
||||
if (weakSelf.page == 1) {
|
||||
[weakSelf.dict removeAllObjects];
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) {
|
||||
NSLog(@"⚠️ self has been deallocated, skipping hide operation");
|
||||
return;
|
||||
}
|
||||
strongSelf.headerView.model = model;
|
||||
if (strongSelf.page == 1) {
|
||||
[strongSelf.dict removeAllObjects];
|
||||
}
|
||||
|
||||
NSArray *arr = [weakSelf.dict allKeys];
|
||||
NSArray *arr = [strongSelf.dict allKeys];
|
||||
for (QXRoomWaterModel*md in model.list) {
|
||||
BOOL haveKey = NO;
|
||||
for (NSString *s in arr) {
|
||||
@@ -75,10 +80,10 @@
|
||||
}
|
||||
if (!haveKey) {
|
||||
// key没有包含某个日期,设置日期的流水json
|
||||
[weakSelf.dict setObject:[md yy_modelToJSONString] forKey:md.time];
|
||||
[strongSelf.dict setObject:[md yy_modelToJSONString] forKey:md.time];
|
||||
}else{
|
||||
//有包含某个日期,先取出之前已有的数据
|
||||
NSString *json = [weakSelf.dict objectForKey:md.time];
|
||||
NSString *json = [strongSelf.dict objectForKey:md.time];
|
||||
//转换为模型
|
||||
QXRoomWaterModel *m = [QXRoomWaterModel yy_modelWithJSON:json];
|
||||
//旧数据
|
||||
@@ -88,10 +93,10 @@
|
||||
//赋值于历史数据
|
||||
m.list = newArr;
|
||||
// 重新设置键值对
|
||||
[weakSelf.dict setObject:[m yy_modelToJSONString] forKey:md.time];
|
||||
[strongSelf.dict setObject:[m yy_modelToJSONString] forKey:md.time];
|
||||
}
|
||||
}
|
||||
NSArray *keys = [weakSelf.dict.allKeys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
|
||||
NSArray *keys = [strongSelf.dict.allKeys sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
|
||||
// NSString *s1 = obj1;
|
||||
// NSString *s2 = obj2;
|
||||
NSDateFormatter *dateFormatter1 = [[NSDateFormatter alloc] init];
|
||||
@@ -110,18 +115,23 @@
|
||||
return NSOrderedSame;
|
||||
}
|
||||
}];
|
||||
self.allDateArray = [NSMutableArray arrayWithArray:keys];
|
||||
[weakSelf.tableView reloadData];
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
strongSelf.allDateArray = [NSMutableArray arrayWithArray:keys];
|
||||
[strongSelf.tableView reloadData];
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
if (model.list.count == 0) {
|
||||
weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
strongSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
}else{
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
showToast(msg);
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (strongSelf) {
|
||||
showToast(msg);
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
});
|
||||
}];
|
||||
|
||||
}
|
||||
|
||||
@@ -74,15 +74,22 @@
|
||||
if (self.model == nil) {
|
||||
return 0;
|
||||
}
|
||||
return 3;
|
||||
if (self.model.tasks.teacher_tasks.count > 0) {
|
||||
return 4;
|
||||
}else{
|
||||
return 3;
|
||||
}
|
||||
|
||||
}
|
||||
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
||||
if (section == 0) {
|
||||
return self.model.tasks.daily_tasks.count;
|
||||
}else if(section == 1){
|
||||
return self.model.tasks.daily_tasks_special.count;
|
||||
}else{
|
||||
}else if(section == 2){
|
||||
return self.model.tasks.usual_tasks.count;
|
||||
}else{
|
||||
return self.model.tasks.teacher_tasks.count;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -93,8 +100,10 @@
|
||||
model = self.model.tasks.daily_tasks[indexPath.row];
|
||||
}else if(indexPath.section == 1){
|
||||
model = self.model.tasks.daily_tasks_special[indexPath.row];
|
||||
}else{
|
||||
}else if(indexPath.section == 2){
|
||||
model = self.model.tasks.usual_tasks[indexPath.row];
|
||||
}else{
|
||||
model = self.model.tasks.teacher_tasks[indexPath.row];
|
||||
}
|
||||
cell.model = model;
|
||||
return cell;
|
||||
@@ -110,8 +119,10 @@
|
||||
titleLabel.text = QXText(@"每日任务");
|
||||
}else if(section == 1){
|
||||
titleLabel.text = QXText(@"特殊任务");
|
||||
}else{
|
||||
}else if(section == 2){
|
||||
titleLabel.text = QXText(@"平台任务");
|
||||
}else{
|
||||
titleLabel.text = QXText(@"师徒任务");
|
||||
}
|
||||
[header addSubview:titleLabel];
|
||||
return header;
|
||||
|
||||
@@ -40,22 +40,33 @@
|
||||
// [self.dataArray addObject:@""];
|
||||
// [self.tableView reloadData];
|
||||
//
|
||||
MJWeakSelf
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[QXMineNetwork roomCoinOrDiamondDetailWithPage:self.page in_out_type:[NSString stringWithFormat:@"%ld",self.type+1] start_time:self.startTime end_time:self.endTime gift_type:[NSString stringWithFormat:@"%ld",self.waterType+1] successBlock:^(NSArray<QXCoinDetailModel *> * _Nonnull list) {
|
||||
if (weakSelf.page == 1) {
|
||||
[weakSelf.dataArray removeAllObjects];
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) {
|
||||
NSLog(@"⚠️ self has been deallocated, skipping hide operation");
|
||||
return;
|
||||
}
|
||||
[weakSelf.dataArray addObjectsFromArray:list];
|
||||
[weakSelf.tableView reloadData];
|
||||
if (strongSelf.page == 1) {
|
||||
[strongSelf.dataArray removeAllObjects];
|
||||
}
|
||||
[strongSelf.dataArray addObjectsFromArray:list];
|
||||
[strongSelf.tableView reloadData];
|
||||
if (list.count == 0) {
|
||||
weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
strongSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
}else{
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (strongSelf) {
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
});
|
||||
|
||||
}];
|
||||
}
|
||||
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
|
||||
|
||||
@@ -43,22 +43,32 @@
|
||||
self.page = 1;
|
||||
}
|
||||
-(void)getData{
|
||||
MJWeakSelf
|
||||
__weak typeof(self) weakSelf = self;
|
||||
[QXMineNetwork walletWithDrawRecordWithPage:self.page start_time:self.startTime end_time:self.endTime SuccessBlock:^(NSArray<QXWithDrawRecordModel *> * _Nonnull list) {
|
||||
if (weakSelf.page == 1) {
|
||||
[weakSelf.dataArray removeAllObjects];
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (!strongSelf) {
|
||||
NSLog(@"⚠️ self has been deallocated, skipping hide operation");
|
||||
return;
|
||||
}
|
||||
[weakSelf.dataArray addObjectsFromArray:list];
|
||||
[weakSelf.tableView reloadData];
|
||||
if (strongSelf.page == 1) {
|
||||
[strongSelf.dataArray removeAllObjects];
|
||||
}
|
||||
[strongSelf.dataArray addObjectsFromArray:list];
|
||||
[strongSelf.tableView reloadData];
|
||||
if (list.count == 0) {
|
||||
weakSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
strongSelf.tableView.mj_footer.state = MJRefreshStateNoMoreData;
|
||||
}else{
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
[weakSelf.tableView.mj_header endRefreshing];
|
||||
[weakSelf.tableView.mj_footer endRefreshing];
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
__strong typeof(weakSelf) strongSelf = weakSelf;
|
||||
if (strongSelf) {
|
||||
[strongSelf.tableView.mj_header endRefreshing];
|
||||
[strongSelf.tableView.mj_footer endRefreshing];
|
||||
}
|
||||
});
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
@@ -48,6 +48,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// 平台任务列表
|
||||
@property(nonatomic,strong)NSArray <QXDayTaskListModel*>*usual_tasks;
|
||||
|
||||
@property(nonatomic,strong)NSArray <QXDayTaskListModel*>*teacher_tasks;
|
||||
|
||||
@end
|
||||
|
||||
@@ -74,6 +75,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property(nonatomic,strong)NSString *from_id;
|
||||
/// 0 记录次数 1 计时
|
||||
@property(nonatomic,strong)NSString *is_time;
|
||||
/// 奖励类型 1金币 2钻石
|
||||
@property(nonatomic,strong)NSString *reward_type;
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
@"daily_tasks" : @"QXDayTaskListModel",
|
||||
@"usual_tasks" : @"QXDayTaskListModel",
|
||||
@"daily_tasks_special": @"QXDayTaskListModel",
|
||||
@"teacher_tasks": @"QXDayTaskListModel",
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
86
QXLive/Mine(音域)/Model/QXFamilyModel.h
Normal file
@@ -0,0 +1,86 @@
|
||||
//
|
||||
// QXFamilyModel.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/27.
|
||||
//
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class QXFamilyMemberModel;
|
||||
@interface QXFamilyModel : NSObject
|
||||
/// 群组id
|
||||
@property(nonatomic,strong)NSString *group_id;
|
||||
/// 家族名称
|
||||
@property(nonatomic,strong)NSString *name;
|
||||
/// 族长id(群主id)
|
||||
@property(nonatomic,strong)NSString *user_id;
|
||||
/// 签约次数(群组人数)
|
||||
@property(nonatomic,strong)NSString *group_members_num;
|
||||
/// 总计收益
|
||||
@property(nonatomic,strong)NSString *group_earnings;
|
||||
/// 族长信息
|
||||
@property(nonatomic,strong)QXUserModel *group_owner_info;
|
||||
/// 家族成员
|
||||
@property(nonatomic,strong)NSArray<QXFamilyMemberModel*> *group_members_lists;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@interface QXFamilyMemberModel : NSObject
|
||||
/// 身价
|
||||
@property(nonatomic,strong)NSString *market_value;
|
||||
/// 0 离线 1 在线
|
||||
@property(nonatomic,assign)NSInteger is_online;
|
||||
/// 昵称
|
||||
@property(nonatomic,strong)NSString *nickname;
|
||||
/// 头像
|
||||
@property(nonatomic,strong)NSString *avatar;
|
||||
/// 用户code
|
||||
@property(nonatomic,strong)NSString *user_code;
|
||||
/// 用户id
|
||||
@property(nonatomic,strong)NSString *user_id;
|
||||
/// 剩余多少天
|
||||
@property(nonatomic,strong)NSString *end_time;
|
||||
/// 剩余多少天
|
||||
@property(nonatomic,strong)NSString *end_day;
|
||||
/// 头像框
|
||||
@property(nonatomic,strong)NSString *dress;
|
||||
/// 头像框
|
||||
@property(nonatomic,strong)NSArray *icon;
|
||||
/// 麦圈
|
||||
@property(nonatomic,strong)NSString *mic_cycle;
|
||||
/// 爵位
|
||||
@property(nonatomic,strong)NSString *nobility_image;
|
||||
/// 昵称颜色
|
||||
@property(nonatomic,strong)NSString *nickname_color;
|
||||
/// 免费续签次数
|
||||
@property(nonatomic,strong)NSString *free_renewal;
|
||||
/// 今日收礼收益
|
||||
@property(nonatomic,strong)NSString *today_earnings;
|
||||
/// 昨日收礼收益
|
||||
@property(nonatomic,strong)NSString *yesterday_earnings;
|
||||
/// 是否显示续约按钮 1:显示 0:不显示
|
||||
@property(nonatomic,strong)NSString *is_show_sign;
|
||||
@end
|
||||
|
||||
@interface QXFamilyEarningModel : NSObject
|
||||
/// 列表 id
|
||||
@property(nonatomic,strong)NSString *id;
|
||||
/// 用户昵称
|
||||
@property(nonatomic,strong)NSString *nickname;
|
||||
/// 头像
|
||||
@property(nonatomic,strong)NSString *avatar;
|
||||
/// 用户code
|
||||
@property(nonatomic,strong)NSString *user_code;
|
||||
/// 收益
|
||||
@property(nonatomic,strong)NSString *earnings;
|
||||
/// 时间
|
||||
@property(nonatomic,strong)NSString *createtime;
|
||||
/// 礼物名称
|
||||
@property(nonatomic,strong)NSString *gift_name;
|
||||
/// 礼物价格
|
||||
@property(nonatomic,strong)NSString *gift_price;
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
31
QXLive/Mine(音域)/Model/QXFamilyModel.m
Normal file
@@ -0,0 +1,31 @@
|
||||
//
|
||||
// QXFamilyModel.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/27.
|
||||
//
|
||||
|
||||
#import "QXFamilyModel.h"
|
||||
|
||||
@implementation QXFamilyModel
|
||||
+(NSDictionary<NSString *,id> *)modelContainerPropertyGenericClass{
|
||||
return @{
|
||||
@"group_owner_info" : @"QXFamilyMemberModel",
|
||||
@"group_members_lists" : @"QXFamilyMemberModel",
|
||||
};
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation QXFamilyMemberModel
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@implementation QXFamilyEarningModel
|
||||
|
||||
|
||||
|
||||
@end
|
||||
@@ -11,7 +11,7 @@
|
||||
#import "QXUserSongListModel.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@class QXRoomInfoModel,QXRoomPitModel,QXRoomOwnerModel,QXHeadLineModel,QXRoomAuction,QXRoomAuctionUser,QXRoomCpUser,QXRoomPkInfo,QXRoomFriendInfo,QXRoomFriendHeartListModel,QXRoomActivitySubModel,QXRoomActivityModel,QXSingerInfo;
|
||||
@class QXRoomInfoModel,QXRoomPitModel,QXRoomOwnerModel,QXHeadLineModel,QXRoomAuction,QXRoomAuctionUser,QXRoomCpUser,QXRoomPkInfo,QXRoomFriendInfo,QXRoomFriendHeartListModel,QXRoomActivitySubModel,QXRoomActivityModel,QXSingerInfo,QXRoomSignInfo;
|
||||
@interface QXRoomModel : NSObject
|
||||
/// 房间信息
|
||||
@property (nonatomic,strong)QXRoomInfoModel *room_info;
|
||||
@@ -33,6 +33,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,strong)QXRoomPkInfo *pk_info;
|
||||
/// 交友房信息
|
||||
@property (nonatomic,strong)QXRoomFriendInfo *friend_info;
|
||||
/// 签约房信息
|
||||
@property (nonatomic,strong)QXRoomSignInfo *sign_info;
|
||||
/// k歌麦位
|
||||
@property (nonatomic,strong)NSArray< QXRoomPitModel*> *song_pit_list;
|
||||
/// 活动
|
||||
@@ -385,4 +387,19 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,strong)QXUserSongListModel *song_info;
|
||||
@property (nonatomic,strong)QXUserSongListModel *next_song_info;
|
||||
@end
|
||||
|
||||
|
||||
@interface QXRoomSignInfo :NSObject
|
||||
/// 0 未开始 1进行中
|
||||
@property (nonatomic,strong)NSString *sign_status;
|
||||
/// 签约天数
|
||||
@property (nonatomic,strong)NSString *sign_day;
|
||||
/// 当前身价
|
||||
@property (nonatomic,strong)NSString *current_body_value;
|
||||
/// 倒计时 时间戳
|
||||
@property (nonatomic,strong)NSString *end_time;
|
||||
/// 签约场次id
|
||||
@property (nonatomic,strong)NSString *sign_id;
|
||||
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
@"friend_info":@"QXRoomFriendInfo",
|
||||
@"gift_cycle":@"QXRoomActivityModel",
|
||||
@"singer_info":@"QXSingerInfo",
|
||||
@"sign_info":@"QXRoomSignInfo",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -155,4 +156,11 @@
|
||||
};
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation QXRoomSignInfo
|
||||
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -32,6 +32,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,strong)NSString *type;
|
||||
/// 剩余时间 (天)
|
||||
@property (nonatomic,strong)NSString *remaining_day;
|
||||
/// 多少个
|
||||
@property (nonatomic,strong)NSString *num;
|
||||
/// 降身卡
|
||||
@property (nonatomic,strong)NSString *ext_value;
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@class QXRelationshipListModel,QXUserCpInfoModel;
|
||||
@class QXRelationshipListModel,QXUserCpInfoModel,QXUserHeartBeatSpaceLogModel;
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXUserModel : NSObject
|
||||
@@ -55,6 +55,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,assign)NSInteger is_can_chat;
|
||||
/// 需要充值金额
|
||||
@property (nonatomic,strong)NSString* can_chat_money;
|
||||
/// 身价
|
||||
@property (nonatomic,strong)NSString* market_value;
|
||||
@end
|
||||
|
||||
|
||||
@@ -272,11 +274,31 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic,strong)NSString *user_id2;
|
||||
@property (nonatomic,strong)NSString *level;
|
||||
@property (nonatomic,strong)NSString *exp;
|
||||
@property (nonatomic,strong)NSString *next_level_exp;
|
||||
@property (nonatomic,strong)NSString *createtime;
|
||||
/// 挂件(装扮)地址
|
||||
@property (nonatomic,strong)NSString *pendant;
|
||||
/// 挂件上的头像位置:0-上,1-右上,2-右,3-右下,4-下,5-左下,6-左,7-左上'
|
||||
@property (nonatomic,strong)NSString *direction;
|
||||
@property (nonatomic,strong)QXUserModel *user_info1;
|
||||
@property (nonatomic,strong)QXUserModel *user_info2;
|
||||
@property (nonatomic,strong)NSArray< QXUserHeartBeatSpaceLogModel *>*gift_log;
|
||||
@end
|
||||
|
||||
@interface QXUserHeartBeatSpaceLogModel : NSObject
|
||||
@property (nonatomic,strong)NSString *id;
|
||||
@property (nonatomic,strong)NSString *room_id;
|
||||
@property (nonatomic,strong)NSString *from_user_id;
|
||||
@property (nonatomic,strong)NSString *to_user_id;
|
||||
@property (nonatomic,strong)NSString *gift_id;
|
||||
@property (nonatomic,strong)NSString *cp_zone_id;
|
||||
@property (nonatomic,strong)NSString *exp;
|
||||
@property (nonatomic,strong)NSString *exp_total;
|
||||
@property (nonatomic,strong)NSString *createtime;
|
||||
@property (nonatomic,strong)NSString *gift_name;
|
||||
@property (nonatomic,strong)NSString *num;
|
||||
@property (nonatomic,strong)NSString *remark;
|
||||
@property (nonatomic,strong)QXUserModel *from_user_info;
|
||||
@property (nonatomic,strong)QXUserModel *to_user_info;
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -93,7 +93,22 @@
|
||||
// @"zhenai" : @"QXRelationshipListModel"
|
||||
@"user_info1": @"QXUserModel",
|
||||
@"user_info2": @"QXUserModel",
|
||||
@"gift_log" : @"QXUserHeartBeatSpaceLogModel"
|
||||
};
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation QXUserHeartBeatSpaceLogModel
|
||||
|
||||
+(NSDictionary<NSString *,id> *)modelContainerPropertyGenericClass{
|
||||
return @{
|
||||
// @"qinmi" : @"QXRelationshipListModel",
|
||||
// @"zhenai" : @"QXRelationshipListModel"
|
||||
@"from_user_info": @"QXUserModel",
|
||||
@"to_user_info": @"QXUserModel",
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
#import "QXNobilityGetPriceModel.h"
|
||||
#import "QXUserSongListModel.h"
|
||||
#import "QXRoomBestFriendModel.h"
|
||||
#import "QXFamilyModel.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@@ -1281,6 +1282,101 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
successBlock:(void (^)(NSArray< QXRelationshipListModel*>* model))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
亲密空间
|
||||
*/
|
||||
+(void)heartBeatUserInfoWithUserId:(NSString*)userId
|
||||
page:(NSInteger)page
|
||||
successBlock:(void (^)(QXUserCpInfoModel* model))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
我的家族|我加入的家族
|
||||
*/
|
||||
+(void)getMyFamilyIsJoin:(BOOL)isJoin
|
||||
successBlock:(void (^)(QXFamilyModel* model))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
|
||||
/**
|
||||
家族收益详情
|
||||
*/
|
||||
+(void)getFamilyEarningWithUserId:(NSString*)userId
|
||||
successBlock:(void (^)(NSArray<QXFamilyEarningModel*>* list))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
|
||||
/**
|
||||
签约出价价格列表
|
||||
userId 当前在签约麦位的用户ID
|
||||
|
||||
*/
|
||||
+(void)signCoinListWithSignId:(NSString*)signId
|
||||
successBlock:(void (^)(NSArray<NSString*>* list))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
签约出价
|
||||
userId 当前在签约麦位的用户ID
|
||||
sign_value 出价价格
|
||||
sign_id 场次id
|
||||
*/
|
||||
+(void)signCoinWithSign_value:(NSString*)sign_value
|
||||
sign_id:(NSString*)sign_id
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
签约开始
|
||||
userId 当前在签约麦位的用户ID
|
||||
|
||||
*/
|
||||
+(void)signStartWithRoomId:(NSString*)roomId
|
||||
userId:(NSString*)userId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
签约结束
|
||||
userId 当前在签约麦位的用户ID
|
||||
signId 场次id
|
||||
*/
|
||||
+(void)signEndWithSignId:(NSString*)signId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
签约延时
|
||||
userId 当前在签约麦位的用户ID
|
||||
signId 场次id
|
||||
*/
|
||||
+(void)signDelayWithSignId:(NSString*)signId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
才艺列表
|
||||
*/
|
||||
+(void)signGeyPlayListSuccessBlock:(void (^)(NSArray* list))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
|
||||
/**
|
||||
免费续约
|
||||
userId 当前在签约麦位的用户ID
|
||||
*/
|
||||
+(void)signFreeResignWithUserId:(NSString*)userId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
/**
|
||||
续签
|
||||
userId 当前在签约麦位的用户ID
|
||||
*/
|
||||
+(void)signCoinResignWithUserId:(NSString*)userId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
successBlock:(void (^)(QXUserHomeModel * _Nonnull))successBlock
|
||||
failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"user_id":user_id,
|
||||
@"user_id":user_id?:@"",
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXGetUserInfo parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
@@ -285,7 +285,7 @@
|
||||
successBlock:(void (^)(NSArray<QXDynamicModel *> * _Nonnull))successBlock
|
||||
failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"user_id":user_id,
|
||||
@"user_id":user_id?:@"",
|
||||
@"page":[NSNumber numberWithInteger:page]
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXUserDynamic parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
@@ -2544,4 +2544,222 @@
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
/**
|
||||
亲密空间
|
||||
*/
|
||||
+(void)heartBeatUserInfoWithUserId:(NSString*)userId
|
||||
page:(NSInteger)page
|
||||
successBlock:(void (^)(QXUserCpInfoModel* model))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"user_id":userId?:@"",
|
||||
@"page":[NSNumber numberWithInteger:page]
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXHeartBeatSpace parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
QXUserCpInfoModel *model = [QXUserCpInfoModel yy_modelWithJSON:responseObject[@"data"]];
|
||||
successBlock(model);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
/**
|
||||
我的家族|我加入的家族
|
||||
*/
|
||||
+(void)getMyFamilyIsJoin:(BOOL)isJoin
|
||||
successBlock:(void (^)(QXFamilyModel* model))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
|
||||
[[QXRequset shareInstance] getWithUrl:QXMyFamily parameters:@{} needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
QXFamilyModel *model = [QXFamilyModel yy_modelWithJSON:responseObject[@"data"]];
|
||||
successBlock(model);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
家族收益详情
|
||||
*/
|
||||
+(void)getFamilyEarningWithUserId:(NSString*)userId
|
||||
successBlock:(void (^)(NSArray<QXFamilyEarningModel*>* list))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"user_id":userId?:@"",
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXHeartBeatSpace parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
NSArray *list = [NSArray yy_modelArrayWithClass:[QXFamilyEarningModel class] json:responseObject[@"data"]];
|
||||
successBlock(list);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
签约出价价格列表
|
||||
userId 当前在签约麦位的用户ID
|
||||
|
||||
*/
|
||||
+(void)signCoinListWithSignId:(NSString *)signId successBlock:(void (^)(NSArray<NSString *> * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"sign_id":signId?:@"",
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXSignCoinList parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
id object = responseObject[@"data"];
|
||||
if ([object isKindOfClass:[NSArray class]]) {
|
||||
successBlock(object);
|
||||
}else{
|
||||
successBlock([NSArray array]);
|
||||
}
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
签约出价
|
||||
userId 当前在签约麦位的用户ID
|
||||
sign_value 出价价格
|
||||
sign_id 场次id
|
||||
*/
|
||||
+(void)signCoinWithSign_value:(NSString*)sign_value
|
||||
sign_id:(NSString*)sign_id
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"sign_value":sign_value?:@"",
|
||||
@"sign_id":sign_id?:@""
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXSignSignCoin parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
签约开始
|
||||
userId 当前在签约麦位的用户ID
|
||||
|
||||
*/
|
||||
+(void)signStartWithRoomId:(NSString*)roomId
|
||||
userId:(NSString*)userId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"room_id":roomId?:@"",
|
||||
@"user_id":userId?:@""
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXSignStartSign parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
签约结束
|
||||
userId 当前在签约麦位的用户ID
|
||||
signId 场次id
|
||||
*/
|
||||
+(void)signEndWithSignId:(NSString*)signId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"sign_id":signId?:@"",
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXSignEndSign parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
签约延时
|
||||
userId 当前在签约麦位的用户ID
|
||||
signId 场次id
|
||||
*/
|
||||
+(void)signDelayWithSignId:(NSString*)signId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"sign_id":signId?:@"",
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXSignDelaySign parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
才艺列表
|
||||
*/
|
||||
+(void)signGeyPlayListSuccessBlock:(void (^)(NSArray* list))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
|
||||
[[QXRequset shareInstance] getWithUrl:QXSignPlayList parameters:@{} needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
免费续约
|
||||
userId 当前在签约麦位的用户ID
|
||||
*/
|
||||
+(void)signFreeResignWithUserId:(NSString*)userId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"user_id":userId?:@"",
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXSignFreeResign parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
|
||||
/**
|
||||
续签
|
||||
userId 当前在签约麦位的用户ID
|
||||
*/
|
||||
+(void)signCoinResignWithUserId:(NSString*)userId
|
||||
successBlock:(void (^)(NSDictionary* dict))successBlock
|
||||
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
|
||||
NSDictionary *parameters =@{
|
||||
@"user_id":userId?:@"",
|
||||
};
|
||||
[[QXRequset shareInstance] postWithUrl:QXSignCoinResign parameters:parameters needCache:NO success:^(id responseObject) {
|
||||
if (successBlock) {
|
||||
successBlock(responseObject[@"data"]);
|
||||
}
|
||||
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
|
||||
failBlock(error,msg);
|
||||
}];
|
||||
}
|
||||
@end
|
||||
|
||||
23
QXLive/Mine(音域)/View/QXBodyPriceRuleView.h
Normal file
@@ -0,0 +1,23 @@
|
||||
//
|
||||
// QXBodyPriceRuleView.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/25.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXBodyPriceRuleView : UIView
|
||||
@property (weak, nonatomic) IBOutlet UILabel *currentPriceLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *beyoundPriceLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *recievePriceLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *realPriceLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *commitBtn;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *closeBtn;
|
||||
@property (weak, nonatomic) IBOutlet UIView *bgView;
|
||||
+(void)showInView:(UIView*)view;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
41
QXLive/Mine(音域)/View/QXBodyPriceRuleView.m
Normal file
@@ -0,0 +1,41 @@
|
||||
//
|
||||
// QXBodyPriceRuleView.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/25.
|
||||
//
|
||||
|
||||
#import "QXBodyPriceRuleView.h"
|
||||
|
||||
@implementation QXBodyPriceRuleView
|
||||
|
||||
|
||||
+(void)showInView:(UIView*)view{
|
||||
UINib *nib = [UINib nibWithNibName:@"QXBodyPriceRuleView" bundle:[NSBundle mainBundle]];
|
||||
QXBodyPriceRuleView *ruleView = [nib instantiateWithOwner:nil options:nil].firstObject;
|
||||
ruleView.frame = UIScreen.mainScreen.bounds;
|
||||
ruleView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
|
||||
ruleView.bgView.alpha = 0;
|
||||
[view addSubview:ruleView];
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
ruleView.bgView.alpha = 1;
|
||||
}completion:^(BOOL finished) {
|
||||
|
||||
}];
|
||||
}
|
||||
- (IBAction)closeAction:(id)sender {
|
||||
[UIView animateWithDuration:0.2 animations:^{
|
||||
self.bgView.alpha = 0;
|
||||
}completion:^(BOOL finished) {
|
||||
[self removeFromSuperview];
|
||||
}];
|
||||
}
|
||||
|
||||
- (IBAction)commitAction:(id)sender {
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
self.bgView.alpha = 0;
|
||||
}completion:^(BOOL finished) {
|
||||
[self removeFromSuperview];
|
||||
}];
|
||||
}
|
||||
@end
|
||||
386
QXLive/Mine(音域)/View/QXBodyPriceRuleView.xib
Normal file
@@ -0,0 +1,386 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<view contentMode="scaleToFill" id="iN0-l3-epB" customClass="QXBodyPriceRuleView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="bjS-Eu-Wht">
|
||||
<rect key="frame" x="40.666666666666657" y="203.66666666666663" width="312" height="470"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="body_price_rule_bg" translatesAutoresizingMaskIntoConstraints="NO" id="0pu-br-WLc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="312" height="470"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="身价详情" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Cey-rm-4VM">
|
||||
<rect key="frame" x="124.00000000000001" y="11" width="63.666666666666671" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="24" id="QMU-XW-UiY"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="16"/>
|
||||
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ag3-iq-BzI">
|
||||
<rect key="frame" x="272" y="2" width="40" height="40"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="40" id="1RM-bw-F5f"/>
|
||||
<constraint firstAttribute="height" constant="40" id="jXb-VG-MeW"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" image="wallet_close"/>
|
||||
<connections>
|
||||
<action selector="closeAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Kn0-Ed-x94"/>
|
||||
</connections>
|
||||
</button>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="r7a-Qi-IKE">
|
||||
<rect key="frame" x="16" y="46" width="280" height="113"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="当前身价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zaH-Pt-FkB">
|
||||
<rect key="frame" x="112" y="10.000000000000028" width="56" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="c6c-Ff-k6z"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="1" green="0.46666666666666667" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yoB-8g-xXJ">
|
||||
<rect key="frame" x="126.33333333333333" y="34.000000000000028" width="9.3333333333333286" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="28" id="ZUT-FY-fDo"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
|
||||
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="room_upseat_coin" translatesAutoresizingMaskIntoConstraints="NO" id="yiz-ZZ-xxm">
|
||||
<rect key="frame" x="137.66666666666669" y="39.000000000000028" width="18" height="18"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="18" id="AN3-EC-ehA"/>
|
||||
<constraint firstAttribute="width" constant="18" id="wI0-ag-JJ4"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="注:每个用户默认身价是1金币,收到礼物后按照比例进行换算身价" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WwA-Jn-1rz">
|
||||
<rect key="frame" x="16" y="68.000000000000028" width="248" height="39"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="0.81176470588235294" green="0.61568627450980395" blue="0.25098039215686274" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="zaH-Pt-FkB" firstAttribute="centerX" secondItem="r7a-Qi-IKE" secondAttribute="centerX" id="0oM-i5-9OG"/>
|
||||
<constraint firstAttribute="bottom" secondItem="WwA-Jn-1rz" secondAttribute="bottom" constant="6" id="71t-4W-LuP"/>
|
||||
<constraint firstItem="yiz-ZZ-xxm" firstAttribute="leading" secondItem="yoB-8g-xXJ" secondAttribute="trailing" constant="2" id="Ggm-C5-Wcb"/>
|
||||
<constraint firstAttribute="height" constant="113" id="MH5-pp-kd7"/>
|
||||
<constraint firstItem="yoB-8g-xXJ" firstAttribute="centerX" secondItem="r7a-Qi-IKE" secondAttribute="centerX" constant="-9" id="Saa-J0-KwU"/>
|
||||
<constraint firstAttribute="trailing" secondItem="WwA-Jn-1rz" secondAttribute="trailing" constant="16" id="YcU-Q9-sKB"/>
|
||||
<constraint firstItem="WwA-Jn-1rz" firstAttribute="leading" secondItem="r7a-Qi-IKE" secondAttribute="leading" constant="16" id="auv-o8-JaK"/>
|
||||
<constraint firstItem="WwA-Jn-1rz" firstAttribute="top" secondItem="yoB-8g-xXJ" secondAttribute="bottom" constant="6" id="m3G-Qk-pBp"/>
|
||||
<constraint firstItem="zaH-Pt-FkB" firstAttribute="top" secondItem="r7a-Qi-IKE" secondAttribute="top" constant="10" id="maZ-g1-7I4"/>
|
||||
<constraint firstItem="yiz-ZZ-xxm" firstAttribute="centerY" secondItem="yoB-8g-xXJ" secondAttribute="centerY" id="rIl-iA-pcw"/>
|
||||
<constraint firstItem="yoB-8g-xXJ" firstAttribute="top" secondItem="zaH-Pt-FkB" secondAttribute="bottom" constant="6" id="ywl-ba-UsO"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="8"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="22W-Pg-BGs">
|
||||
<rect key="frame" x="16" y="167" width="280" height="229"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="1qh-1U-0g1">
|
||||
<rect key="frame" x="19.000000000000007" y="25" width="47.999999999999993" height="48"/>
|
||||
<color key="backgroundColor" red="0.72156862745098038" green="0.92156862745098034" blue="0.97647058823529409" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="48" id="Bvl-n0-GY5"/>
|
||||
<constraint firstAttribute="width" constant="48" id="e9Z-Jy-yV7"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="24"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="竞拍溢价" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R5s-ew-2ma">
|
||||
<rect key="frame" x="23.000000000000007" y="31.999999999999996" width="40" height="33.666666666666657"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="40" id="55m-tS-xSt"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
|
||||
<color key="textColor" red="0.20392156862745098" green="0.54117647058823526" blue="0.83529411764705885" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="+" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1nL-zB-s12">
|
||||
<rect key="frame" x="79" y="35" width="12.666666666666671" height="28"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="28" id="Npx-zw-09W"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
|
||||
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="pvx-IE-jQQ">
|
||||
<rect key="frame" x="103.66666666666669" y="25" width="48" height="48"/>
|
||||
<color key="backgroundColor" red="0.97254901960784312" green="0.90980392156862744" blue="0.78431372549019607" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="48" id="9wK-lu-5ww"/>
|
||||
<constraint firstAttribute="width" constant="48" id="oXU-Bh-nt7"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="24"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="=" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Ef-wH-HNE">
|
||||
<rect key="frame" x="163.66666666666669" y="34" width="12.666666666666657" height="28"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="20"/>
|
||||
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="收礼身价" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FDt-UE-yKg">
|
||||
<rect key="frame" x="107.66666666666669" y="31.999999999999996" width="40" height="33.666666666666657"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="40" id="md1-1F-BXo"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="14"/>
|
||||
<color key="textColor" red="0.92941176470588238" green="0.66666666666666663" blue="0.098039215686274508" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="TCX-JN-r9B">
|
||||
<rect key="frame" x="189" y="13" width="72" height="72"/>
|
||||
<color key="backgroundColor" red="0.6470588235294118" green="1" blue="0.76078431372549016" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="72" id="UFB-82-XSq"/>
|
||||
<constraint firstAttribute="height" constant="72" id="h6t-2i-vCw"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="36"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="实际身价" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TJG-ml-Bip">
|
||||
<rect key="frame" x="200.00000000000003" y="27.333333333333314" width="50" height="43"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="50" id="Kof-yq-JSa"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
|
||||
<color key="textColor" red="0.0" green="0.53725490196078429" blue="0.15294117647058825" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dJ6-LR-vgw">
|
||||
<rect key="frame" x="16" y="98" width="117" height="119"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="1RH-Mf-SWP">
|
||||
<rect key="frame" x="0.0" y="0.0" width="117" height="24"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="竞拍溢价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uK0-7X-IBc">
|
||||
<rect key="frame" x="34.333333333333329" y="4.3333333333333144" width="48" height="15"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.20392156862745098" green="0.54117647058823526" blue="0.83529411764705885" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.68235294117647061" green="0.92941176470588238" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="24" id="8em-ee-gLY"/>
|
||||
<constraint firstItem="uK0-7X-IBc" firstAttribute="centerY" secondItem="1RH-Mf-SWP" secondAttribute="centerY" id="Q5j-gJ-Sxm"/>
|
||||
<constraint firstItem="uK0-7X-IBc" firstAttribute="centerX" secondItem="1RH-Mf-SWP" secondAttribute="centerX" id="cha-7w-LSq"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="签约竞拍次数越多,签约成交比签约时身价更高,则竞拍溢价就越高" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NRs-fX-FIN">
|
||||
<rect key="frame" x="8" y="32" width="101" height="79"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.29411764705882354" green="0.66274509803921566" blue="0.76862745098039209" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.89803921568627454" green="0.96862745098039216" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="117" id="4rA-dE-Rhv"/>
|
||||
<constraint firstAttribute="trailing" secondItem="1RH-Mf-SWP" secondAttribute="trailing" id="5da-35-QcR"/>
|
||||
<constraint firstItem="NRs-fX-FIN" firstAttribute="top" secondItem="1RH-Mf-SWP" secondAttribute="bottom" constant="8" id="QTq-Mw-KUH"/>
|
||||
<constraint firstItem="NRs-fX-FIN" firstAttribute="leading" secondItem="dJ6-LR-vgw" secondAttribute="leading" constant="8" id="Wtk-ZE-Iu3"/>
|
||||
<constraint firstAttribute="bottom" secondItem="NRs-fX-FIN" secondAttribute="bottom" constant="8" id="YMJ-9a-hmC"/>
|
||||
<constraint firstItem="1RH-Mf-SWP" firstAttribute="top" secondItem="dJ6-LR-vgw" secondAttribute="top" id="Z3L-1R-FJy"/>
|
||||
<constraint firstAttribute="trailing" secondItem="NRs-fX-FIN" secondAttribute="trailing" constant="8" id="kfY-Vy-yGv"/>
|
||||
<constraint firstItem="1RH-Mf-SWP" firstAttribute="leading" secondItem="dJ6-LR-vgw" secondAttribute="leading" id="lmc-Ys-kzq"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="8"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="5QI-g5-Etm">
|
||||
<rect key="frame" x="144" y="98" width="117" height="119"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="16p-zb-VAB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="117" height="24"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="竞拍溢价" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DfF-lh-oXh">
|
||||
<rect key="frame" x="34.333333333333343" y="4.3333333333333144" width="48" height="15"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.72549019607843135" green="0.57647058823529407" blue="0.11372549019607843" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="1" green="0.90196078431372551" blue="0.59215686274509804" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="DfF-lh-oXh" firstAttribute="centerY" secondItem="16p-zb-VAB" secondAttribute="centerY" id="6If-AV-pYD"/>
|
||||
<constraint firstItem="DfF-lh-oXh" firstAttribute="centerX" secondItem="16p-zb-VAB" secondAttribute="centerX" id="8Eb-hb-bCP"/>
|
||||
<constraint firstAttribute="height" constant="24" id="Oeu-V9-5eq"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="签约竞拍次数越多,签约成交比签约时身价更高,则竞拍溢价就越高" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M4h-lx-wJ4">
|
||||
<rect key="frame" x="8" y="32" width="101" height="79"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.92941176470588238" green="0.66666666666666663" blue="0.098039215686274508" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.96470588235294119" green="0.97254901960784312" blue="0.89803921568627454" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="16p-zb-VAB" firstAttribute="leading" secondItem="5QI-g5-Etm" secondAttribute="leading" id="Bbm-E2-7J9"/>
|
||||
<constraint firstAttribute="bottom" secondItem="M4h-lx-wJ4" secondAttribute="bottom" constant="8" id="GGC-6Y-cpC"/>
|
||||
<constraint firstItem="M4h-lx-wJ4" firstAttribute="leading" secondItem="5QI-g5-Etm" secondAttribute="leading" constant="8" id="OLC-Xu-jcE"/>
|
||||
<constraint firstItem="16p-zb-VAB" firstAttribute="top" secondItem="5QI-g5-Etm" secondAttribute="top" id="PQm-S7-LCt"/>
|
||||
<constraint firstItem="M4h-lx-wJ4" firstAttribute="top" secondItem="16p-zb-VAB" secondAttribute="bottom" constant="8" id="bhY-eL-Te3"/>
|
||||
<constraint firstAttribute="width" constant="117" id="fPg-ws-iOS"/>
|
||||
<constraint firstAttribute="trailing" secondItem="16p-zb-VAB" secondAttribute="trailing" id="haZ-oi-Jfa"/>
|
||||
<constraint firstAttribute="trailing" secondItem="M4h-lx-wJ4" secondAttribute="trailing" constant="8" id="wDq-f5-2aI"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="8"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="1qh-1U-0g1" firstAttribute="top" secondItem="22W-Pg-BGs" secondAttribute="top" constant="25" id="5aA-MU-VhR"/>
|
||||
<constraint firstItem="FDt-UE-yKg" firstAttribute="centerY" secondItem="pvx-IE-jQQ" secondAttribute="centerY" id="729-Vm-24r"/>
|
||||
<constraint firstAttribute="trailing" secondItem="TCX-JN-r9B" secondAttribute="trailing" constant="19" id="DIH-n9-8BY"/>
|
||||
<constraint firstItem="TCX-JN-r9B" firstAttribute="centerY" secondItem="1qh-1U-0g1" secondAttribute="centerY" id="IFW-2s-j7V"/>
|
||||
<constraint firstItem="R5s-ew-2ma" firstAttribute="centerY" secondItem="1qh-1U-0g1" secondAttribute="centerY" id="N9g-k4-GdM"/>
|
||||
<constraint firstItem="pvx-IE-jQQ" firstAttribute="centerY" secondItem="1qh-1U-0g1" secondAttribute="centerY" id="PI4-ui-iG5"/>
|
||||
<constraint firstItem="FDt-UE-yKg" firstAttribute="centerX" secondItem="pvx-IE-jQQ" secondAttribute="centerX" id="TPS-17-unD"/>
|
||||
<constraint firstItem="5QI-g5-Etm" firstAttribute="top" secondItem="dJ6-LR-vgw" secondAttribute="top" id="VnE-Yk-Fs5"/>
|
||||
<constraint firstItem="dJ6-LR-vgw" firstAttribute="leading" secondItem="22W-Pg-BGs" secondAttribute="leading" constant="16" id="afz-KP-jxq"/>
|
||||
<constraint firstItem="5QI-g5-Etm" firstAttribute="bottom" secondItem="dJ6-LR-vgw" secondAttribute="bottom" id="cE5-G9-ELY"/>
|
||||
<constraint firstAttribute="bottom" secondItem="dJ6-LR-vgw" secondAttribute="bottom" constant="12" id="cu7-kg-F1S"/>
|
||||
<constraint firstItem="TJG-ml-Bip" firstAttribute="centerX" secondItem="TCX-JN-r9B" secondAttribute="centerX" id="dyH-i4-I9s"/>
|
||||
<constraint firstItem="dJ6-LR-vgw" firstAttribute="top" secondItem="1qh-1U-0g1" secondAttribute="bottom" constant="25" id="e3D-aw-dQb"/>
|
||||
<constraint firstItem="TJG-ml-Bip" firstAttribute="centerY" secondItem="TCX-JN-r9B" secondAttribute="centerY" id="fAq-7E-JQR"/>
|
||||
<constraint firstItem="pvx-IE-jQQ" firstAttribute="leading" secondItem="1nL-zB-s12" secondAttribute="trailing" constant="12" id="gvw-jh-Rfk"/>
|
||||
<constraint firstItem="1qh-1U-0g1" firstAttribute="leading" secondItem="22W-Pg-BGs" secondAttribute="leading" constant="19" id="h6D-gY-uge"/>
|
||||
<constraint firstItem="1nL-zB-s12" firstAttribute="leading" secondItem="1qh-1U-0g1" secondAttribute="trailing" constant="12" id="tfl-1O-cAo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="5QI-g5-Etm" secondAttribute="trailing" constant="19" id="tt7-w6-uG8"/>
|
||||
<constraint firstItem="1nL-zB-s12" firstAttribute="centerY" secondItem="1qh-1U-0g1" secondAttribute="centerY" id="vIW-PX-cda"/>
|
||||
<constraint firstItem="R5s-ew-2ma" firstAttribute="centerX" secondItem="1qh-1U-0g1" secondAttribute="centerX" id="xP7-mU-bAf"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="8"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PHh-tS-kNh">
|
||||
<rect key="frame" x="27" y="412" width="258" height="42"/>
|
||||
<color key="backgroundColor" red="0.22745098039215686" green="0.73725490196078436" blue="0.42745098039215684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="42" id="4KY-On-BUi"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="确认">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="21"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="commitAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="mL0-U7-wQJ"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="22W-Pg-BGs" firstAttribute="top" secondItem="r7a-Qi-IKE" secondAttribute="bottom" constant="8" id="33m-VS-2sZ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="0pu-br-WLc" secondAttribute="bottom" id="4e3-Y4-Tac"/>
|
||||
<constraint firstAttribute="trailing" secondItem="PHh-tS-kNh" secondAttribute="trailing" constant="27" id="6W3-Sf-nfN"/>
|
||||
<constraint firstItem="Cey-rm-4VM" firstAttribute="centerX" secondItem="bjS-Eu-Wht" secondAttribute="centerX" id="8p7-Yq-Bsl"/>
|
||||
<constraint firstItem="22W-Pg-BGs" firstAttribute="trailing" secondItem="r7a-Qi-IKE" secondAttribute="trailing" id="9hR-zr-C7I"/>
|
||||
<constraint firstItem="0pu-br-WLc" firstAttribute="top" secondItem="bjS-Eu-Wht" secondAttribute="top" id="CAS-bj-ppe"/>
|
||||
<constraint firstItem="PHh-tS-kNh" firstAttribute="leading" secondItem="bjS-Eu-Wht" secondAttribute="leading" constant="27" id="F9D-GW-pPi"/>
|
||||
<constraint firstAttribute="trailing" secondItem="r7a-Qi-IKE" secondAttribute="trailing" constant="16" id="Irf-7a-IAZ"/>
|
||||
<constraint firstAttribute="width" constant="312" id="KlA-b8-6yJ"/>
|
||||
<constraint firstItem="Cey-rm-4VM" firstAttribute="top" secondItem="bjS-Eu-Wht" secondAttribute="top" constant="11" id="MZ1-ir-rFg"/>
|
||||
<constraint firstAttribute="bottom" secondItem="PHh-tS-kNh" secondAttribute="bottom" constant="16" id="RnS-Jh-Wrf"/>
|
||||
<constraint firstItem="r7a-Qi-IKE" firstAttribute="leading" secondItem="bjS-Eu-Wht" secondAttribute="leading" constant="16" id="U7n-mt-ov1"/>
|
||||
<constraint firstItem="PHh-tS-kNh" firstAttribute="top" secondItem="22W-Pg-BGs" secondAttribute="bottom" constant="16" id="Uie-am-bsR"/>
|
||||
<constraint firstItem="ag3-iq-BzI" firstAttribute="top" secondItem="bjS-Eu-Wht" secondAttribute="top" constant="2" id="Vyo-LV-CcW"/>
|
||||
<constraint firstItem="0pu-br-WLc" firstAttribute="leading" secondItem="bjS-Eu-Wht" secondAttribute="leading" id="aL1-WV-fhl"/>
|
||||
<constraint firstItem="22W-Pg-BGs" firstAttribute="leading" secondItem="r7a-Qi-IKE" secondAttribute="leading" id="hEM-xo-DUO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="ag3-iq-BzI" secondAttribute="trailing" id="oMO-jd-Kff"/>
|
||||
<constraint firstAttribute="trailing" secondItem="0pu-br-WLc" secondAttribute="trailing" id="tGt-Bl-B7G"/>
|
||||
<constraint firstAttribute="height" constant="470" id="tsx-66-top"/>
|
||||
<constraint firstItem="r7a-Qi-IKE" firstAttribute="top" secondItem="Cey-rm-4VM" secondAttribute="bottom" constant="11" id="wJM-pt-KcG"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="10"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.29999999999999999" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="bjS-Eu-Wht" firstAttribute="centerY" secondItem="vUN-kp-3ea" secondAttribute="centerY" id="XT7-vk-EsU"/>
|
||||
<constraint firstItem="bjS-Eu-Wht" firstAttribute="centerX" secondItem="vUN-kp-3ea" secondAttribute="centerX" id="h5o-I1-Iu2"/>
|
||||
</constraints>
|
||||
<connections>
|
||||
<outlet property="bgView" destination="bjS-Eu-Wht" id="7GC-AR-cpg"/>
|
||||
<outlet property="closeBtn" destination="ag3-iq-BzI" id="a0h-Fk-P2z"/>
|
||||
<outlet property="commitBtn" destination="PHh-tS-kNh" id="iOS-08-gnl"/>
|
||||
<outlet property="currentPriceLabel" destination="yoB-8g-xXJ" id="ZmR-gN-kho"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="139.69465648854961" y="19.718309859154932"/>
|
||||
</view>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="body_price_rule_bg" width="312" height="470"/>
|
||||
<image name="room_upseat_coin" width="16" height="16"/>
|
||||
<image name="wallet_close" width="11" height="11"/>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -45,6 +45,8 @@ typedef NS_ENUM(NSInteger) {
|
||||
QXMainHeaderOptionTypeWallet = 35,
|
||||
/// 礼物墙
|
||||
QXMainHeaderOptionTypeGiftWall = 36,
|
||||
/// 身价
|
||||
QXMainHeaderOptionTypeBodyPrice = 37,
|
||||
}QXMainHeaderOptionType;
|
||||
@protocol QXMainHeaderViewDelegate <NSObject>
|
||||
|
||||
|
||||
@@ -56,6 +56,11 @@
|
||||
@property (nonatomic, strong)UILabel *walletMoneyLabel;
|
||||
@property (nonatomic, strong)UIButton *walletBtn;
|
||||
|
||||
@property (nonatomic, strong)UIImageView *bodyPriceBgImageView;
|
||||
@property (nonatomic, strong)UILabel *bodyPriceBottomLabel;
|
||||
@property (nonatomic, strong)UILabel *bodyPriceMoneyLabel;
|
||||
@property (nonatomic, strong)UIButton *bodyPriceBtn;
|
||||
|
||||
@property (nonatomic, strong)UIImageView *giftWallBgImageView;
|
||||
@property (nonatomic, strong)UILabel *giftWallTitleLabel;
|
||||
@property (nonatomic, strong)UIButton *giftWallBtn;
|
||||
@@ -240,7 +245,7 @@
|
||||
self.walletTitleLabel.textColor = RGB16(0x929196);
|
||||
[self.walletBgView addSubview:self.walletTitleLabel];
|
||||
|
||||
CGFloat walletWidth = (self.topBgView.width - 16*3) / 2;
|
||||
CGFloat walletWidth = (self.topBgView.width - 16*4) / 3;
|
||||
self.walletBgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.topBgView.left, self.walletTitleLabel.bottom+8, walletWidth, 60)];
|
||||
self.walletBgImageView.backgroundColor = RGB16(0xFFE38E);
|
||||
[self.walletBgImageView addRoundedCornersWithRadius:8];
|
||||
@@ -254,15 +259,35 @@
|
||||
[self.walletBgView addSubview:self.walletBottomLabel];
|
||||
|
||||
|
||||
self.walletMoneyLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.walletBgImageView.left, self.walletBgImageView.top+11, walletWidth, 25)];
|
||||
self.walletMoneyLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.walletBgImageView.left, self.walletBgImageView.top+11, walletWidth, 27)];
|
||||
self.walletMoneyLabel.text = @"0";
|
||||
self.walletMoneyLabel.textAlignment = NSTextAlignmentCenter;
|
||||
self.walletMoneyLabel.font = [UIFont fontWithName:@"DIN Condensed" size:25];
|
||||
self.walletMoneyLabel.textColor = RGB16(0x222222);
|
||||
[self.walletBgView addSubview:self.walletMoneyLabel];
|
||||
|
||||
self.bodyPriceBgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.walletBgImageView.right+16, self.walletBgImageView.top, walletWidth, self.walletBgImageView.height)];
|
||||
self.bodyPriceBgImageView.backgroundColor = RGB16(0xFFB68F);
|
||||
[self.bodyPriceBgImageView addRoundedCornersWithRadius:8];
|
||||
[self.walletBgView addSubview:self.bodyPriceBgImageView];
|
||||
|
||||
self.giftWallBgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.walletBgImageView.right+16, self.walletBgImageView.top, walletWidth, self.walletBgImageView.height)];
|
||||
self.bodyPriceBottomLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.bodyPriceBgImageView.left, self.bodyPriceBgImageView.bottom-14-11, walletWidth, 14)];
|
||||
self.bodyPriceBottomLabel.text = @"身价";
|
||||
self.bodyPriceBottomLabel.textAlignment = NSTextAlignmentCenter;
|
||||
self.bodyPriceBottomLabel.font = [UIFont systemFontOfSize:12];
|
||||
self.bodyPriceBottomLabel.textColor = RGB16(0x333333);
|
||||
[self.walletBgView addSubview:self.bodyPriceBottomLabel];
|
||||
|
||||
|
||||
self.bodyPriceMoneyLabel = [[UILabel alloc] initWithFrame:CGRectMake(self.bodyPriceBgImageView.left, self.walletBgImageView.top+11, walletWidth, 27)];
|
||||
self.bodyPriceMoneyLabel.text = @"1";
|
||||
self.bodyPriceMoneyLabel.textAlignment = NSTextAlignmentCenter;
|
||||
self.bodyPriceMoneyLabel.font = [UIFont fontWithName:@"DIN Condensed" size:25];
|
||||
self.bodyPriceMoneyLabel.textColor = RGB16(0x222222);
|
||||
[self.walletBgView addSubview:self.bodyPriceMoneyLabel];
|
||||
|
||||
|
||||
self.giftWallBgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(self.bodyPriceBgImageView.right+16, self.walletBgImageView.top, walletWidth, self.walletBgImageView.height)];
|
||||
self.giftWallBgImageView.backgroundColor = RGB16(0xF1B3FF);
|
||||
[self.giftWallBgImageView addRoundedCornersWithRadius:8];
|
||||
[self.walletBgView addSubview:self.giftWallBgImageView];
|
||||
@@ -281,6 +306,10 @@
|
||||
self.giftWallBtn = [[UIButton alloc] initWithFrame:self.giftWallBgImageView.frame];
|
||||
[self.giftWallBtn addTarget:self action:@selector(giftWalltAction) forControlEvents:(UIControlEventTouchUpInside)];
|
||||
[self.walletBgView addSubview:self.giftWallBtn];
|
||||
|
||||
self.bodyPriceBtn = [[UIButton alloc] initWithFrame:self.bodyPriceBgImageView.frame];
|
||||
[self.bodyPriceBtn addTarget:self action:@selector(bodyPriceAction) forControlEvents:(UIControlEventTouchUpInside)];
|
||||
[self.walletBgView addSubview:self.bodyPriceBtn];
|
||||
}
|
||||
-(CGFloat)getHeight{
|
||||
return self.walletBgView.bottom+6;
|
||||
@@ -359,6 +388,12 @@
|
||||
}
|
||||
}
|
||||
|
||||
-(void)bodyPriceAction{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
|
||||
[self.delegate didClickOptionType:QXMainHeaderOptionTypeBodyPrice];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-(void)gotoUserHomePageClick{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickOptionType:)]) {
|
||||
@@ -367,6 +402,7 @@
|
||||
}
|
||||
-(void)setUserModel:(QXUserModel *)userModel{
|
||||
_userModel = userModel;
|
||||
self.nameLabel.text = userModel.market_value;
|
||||
[self.userHeaderView setHeadIcon:userModel.avatar dress:userModel.dress];
|
||||
[self.userHeaderView.nobilityImageView sd_setImageWithURL:[NSURL URLWithString:userModel.nobility_image]];
|
||||
if ([userModel.nickname_color isExist]) {
|
||||
|
||||
@@ -17,6 +17,8 @@ typedef NS_ENUM(NSInteger) {
|
||||
QXMineServiceTypeBackpack = 42,
|
||||
/// 设置
|
||||
QXMineServiceTypeSetting = 43,
|
||||
/// 家族
|
||||
QXMineServiceTypeFamily = 80,
|
||||
/// 帮助中心
|
||||
QXMineServiceTypeHelp = 44,
|
||||
/// 邀请
|
||||
|
||||
@@ -165,12 +165,17 @@
|
||||
md4.icon = @"service_setting";
|
||||
md4.type = QXMineServiceTypeSetting;
|
||||
|
||||
QXServiceModel *md5 = [[QXServiceModel alloc] init];
|
||||
md5.title = @"家族";
|
||||
md5.icon = @"service_setting";
|
||||
md5.type = QXMineServiceTypeFamily;
|
||||
|
||||
_serviceArray = [NSMutableArray arrayWithArray:@[
|
||||
md1,
|
||||
md2,
|
||||
md3,
|
||||
md4,
|
||||
md5
|
||||
]];
|
||||
}
|
||||
return _serviceArray;
|
||||
|
||||
@@ -12,6 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@interface QXUserHomeHeaderView : UIView
|
||||
@property (nonatomic,strong)QXUserHomeModel *model;
|
||||
@property (nonatomic,strong)NSString *userId;
|
||||
-(void)headerStartPlay;
|
||||
@end
|
||||
|
||||
@interface QXTagImageCell : UICollectionViewCell
|
||||
|
||||
@@ -17,8 +17,10 @@
|
||||
#import "QXUserCpCardView.h"
|
||||
#import "QXGiftWallViewController.h"
|
||||
#import "QXHeartBeatSpaceViewController.h"
|
||||
#import "QXUserHomePageViewController.h"
|
||||
#import "QXHeartBeatSpaceViewController.h"
|
||||
|
||||
@interface QXUserHomeHeaderView()<UICollectionViewDelegate,UICollectionViewDataSource>
|
||||
@interface QXUserHomeHeaderView()<UICollectionViewDelegate,UICollectionViewDataSource,QXUserCpCardViewDelegate>
|
||||
//@property (nonatomic,strong) CKShimmerLabel * tempName;
|
||||
@property (nonatomic,strong) QXSeatHeaderView* headerView;
|
||||
@property (nonatomic,strong) UIView * whiteBgView;
|
||||
@@ -57,8 +59,6 @@
|
||||
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.headerView = [[QXSeatHeaderView alloc] initWithFrame:CGRectMake(32, 26, 70, 84)];
|
||||
|
||||
[self.headerView addRoundedCornersWithRadius:35];
|
||||
[self addSubview:self.headerView];
|
||||
[self.headerView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(32);
|
||||
@@ -264,6 +264,7 @@
|
||||
[self.whiteBgView addSubview:self.cpDressView];
|
||||
|
||||
self.cpCardView = [[QXUserCpCardView alloc] init];
|
||||
self.cpCardView.delegate = self;
|
||||
self.cpCardView.hidden = YES;
|
||||
MJWeakSelf
|
||||
[self.cpCardView addTapBlock:^(id _Nonnull obj) {
|
||||
@@ -289,8 +290,15 @@
|
||||
make.height.mas_equalTo(ScaleWidth(40));
|
||||
make.top.equalTo(self.cpCardView.mas_bottom).offset(8);
|
||||
}];
|
||||
}
|
||||
[self.whiteBgView bringSubviewToFront:self.playBtn];
|
||||
[self bringSubviewToFront:self.followBtn];
|
||||
|
||||
}
|
||||
-(void)headerStartPlay{
|
||||
[self.headerView playHWDMP4];
|
||||
[self.cpCardView headerStartPlay];
|
||||
[self.cpDressView headerStartPlay];
|
||||
}
|
||||
-(void)giftWallAction{
|
||||
QXGiftWallViewController *vc = [[QXGiftWallViewController alloc] init];
|
||||
vc.userId = self.userId;
|
||||
@@ -314,6 +322,21 @@
|
||||
[[QXGlobal shareGlobal] chatWithUserID:self.model.user_id nickname:self.model.nickname avatar:self.model.avatar navagationController:self.navigationController];
|
||||
}
|
||||
}
|
||||
-(void)didClickHeaderViewUserId:(NSString*)userId{
|
||||
if ([userId isEqualToString:self.userId]) {
|
||||
return;
|
||||
}
|
||||
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
|
||||
vc.user_id = userId;
|
||||
[self.viewController.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
|
||||
-(void)didClickHeaderCardViewWithUserId:(NSString*)userId{
|
||||
QXHeartBeatSpaceViewController *vc = [[QXHeartBeatSpaceViewController alloc] init];
|
||||
vc.userId = userId;
|
||||
[self.viewController.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
|
||||
|
||||
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
||||
if (collectionView == self.collectionView) {
|
||||
@@ -335,6 +358,10 @@
|
||||
}
|
||||
|
||||
}
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
self.cpCardView.userId = self.userId;
|
||||
}
|
||||
-(void)setModel:(QXUserHomeModel *)model{
|
||||
_model = model;
|
||||
// model.nickname = @"大家好撒客户端撒大厦尽快";
|
||||
|
||||
@@ -19,7 +19,11 @@
|
||||
_model = model;
|
||||
self.nameLabel.text = model.title;
|
||||
[self.dressImageView sd_setImageWithURL:[NSURL URLWithString:model.base_image]];
|
||||
self.timeLabel.text = [NSString stringWithFormat:@"%@%@",model.remaining_day,QXText(@"天")];
|
||||
if ([model.type isEqualToString:@"12"]) {
|
||||
self.timeLabel.text = [NSString stringWithFormat:@"x%@",model.num];
|
||||
}else{
|
||||
self.timeLabel.text = [NSString stringWithFormat:@"%@%@",model.remaining_day,QXText(@"天")];
|
||||
}
|
||||
// if (model.is_using.intValue == 1) {
|
||||
// self.selecteBtn.selected = NO;
|
||||
// }else{
|
||||
|
||||
@@ -11,21 +11,21 @@
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="QXDressCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="254" height="313"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="104" height="137"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="254" height="313"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="104" height="137"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n0W-rO-R0R">
|
||||
<rect key="frame" x="0.0" y="0.0" width="254" height="313"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="104" height="137"/>
|
||||
<subviews>
|
||||
<button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Gk9-jf-oXA">
|
||||
<rect key="frame" x="0.0" y="0.0" width="254" height="313"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="104" height="137"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="i9y-iF-N7k">
|
||||
<rect key="frame" x="10" y="281" width="234" height="21"/>
|
||||
<rect key="frame" x="10" y="105" width="84" height="21"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="21" id="rrg-mb-mKp"/>
|
||||
</constraints>
|
||||
@@ -34,7 +34,7 @@
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="dze-FS-DlP">
|
||||
<rect key="frame" x="10" y="25" width="234" height="246"/>
|
||||
<rect key="frame" x="10" y="25" width="84" height="70"/>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<constraints>
|
||||
@@ -58,9 +58,9 @@
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Jon-rv-RWs">
|
||||
<rect key="frame" x="213.66666666666666" y="0.0" width="40.333333333333343" height="15"/>
|
||||
<rect key="frame" x="63.666666666666657" y="0.0" width="40.333333333333343" height="15"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="gift_number_bg" translatesAutoresizingMaskIntoConstraints="NO" id="acA-Gl-J3f">
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="gift_number_bg" translatesAutoresizingMaskIntoConstraints="NO" id="acA-Gl-J3f">
|
||||
<rect key="frame" x="0.0" y="0.0" width="40.333333333333336" height="15"/>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="30天" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fQr-Il-R17">
|
||||
@@ -107,6 +107,6 @@
|
||||
</collectionViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="gift_number_bg" width="35" height="13"/>
|
||||
<image name="gift_number_bg" width="34" height="16"/>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
17
QXLive/Mine(音域)/View/亲密关系/QXHeartBeatLevelRuleView.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// QXHeartBeatLevelRuleView.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/22.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXHeartBeatLevelRuleView : UIView
|
||||
@property (nonatomic,strong)NSString*rule;
|
||||
-(void)showInView:(UIView *)view;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
123
QXLive/Mine(音域)/View/亲密关系/QXHeartBeatLevelRuleView.m
Normal file
@@ -0,0 +1,123 @@
|
||||
//
|
||||
// QXHeartBeatLevelRuleView.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/22.
|
||||
//
|
||||
|
||||
#import "QXHeartBeatLevelRuleView.h"
|
||||
#import <WebKit/WebKit.h>
|
||||
@interface QXHeartBeatLevelRuleView()
|
||||
@property(nonatomic,strong)WKWebView *contentWebView;
|
||||
@property(nonatomic,strong)UIView* bgView;
|
||||
@property(nonatomic,strong)UIButton* closeBtn;
|
||||
@end
|
||||
@implementation QXHeartBeatLevelRuleView
|
||||
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)initSubviews{
|
||||
self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.3];
|
||||
|
||||
self.bgView = [[UIView alloc] initWithFrame:CGRectMake((self.width-ScaleWidth(312))/2, (self.height-ScaleWidth(492))/2-40, ScaleWidth(312), ScaleWidth(492))];
|
||||
[self.bgView addRoundedCornersWithRadius:16 byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)];
|
||||
[self addSubview:self.bgView];
|
||||
|
||||
[self.bgView addSubview:self.contentWebView];
|
||||
self.closeBtn = [[UIButton alloc] initWithFrame:CGRectMake((self.width-40)/2, self.bgView.bottom+10, 40, 40)];
|
||||
[self.closeBtn setBackgroundImage:[UIImage imageNamed:@"home_white_close"] forState:(UIControlStateNormal)];
|
||||
[self.closeBtn addTarget:self action:@selector(closeAction) forControlEvents:(UIControlEventTouchUpInside)];
|
||||
[self addSubview:self.closeBtn];
|
||||
[self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.width.height.mas_equalTo(40);
|
||||
make.centerX.equalTo(self);
|
||||
make.top.mas_equalTo(self.bgView.bottom+10);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
-(void)setRule:(NSString *)rule{
|
||||
_rule = rule;
|
||||
[self loadData];
|
||||
}
|
||||
- (void)loadData {
|
||||
NSURL* url=[NSURL URLWithString:self.rule];
|
||||
NSURLRequest *request =[NSURLRequest requestWithURL:url];
|
||||
[self.contentWebView loadRequest:request];
|
||||
}
|
||||
|
||||
|
||||
-(void)closeAction{
|
||||
[self hide];
|
||||
}
|
||||
|
||||
#pragma mark - getters and setters
|
||||
- (WKWebView *)contentWebView {
|
||||
if (!_contentWebView) {
|
||||
//设置网页的配置文件
|
||||
WKWebViewConfiguration * configuration = [[WKWebViewConfiguration alloc]init];
|
||||
// 允许可以与网页交互,选择视图
|
||||
configuration.selectionGranularity = YES;
|
||||
// web内容处理池pr
|
||||
configuration.processPool = [[WKProcessPool alloc] init];
|
||||
//自定义配置,一般用于 js调用oc方法(OC拦截URL中的数据做自定义操作)
|
||||
WKUserContentController * UserContentController = [[WKUserContentController alloc]init];
|
||||
// 是否支持记忆读取
|
||||
configuration.suppressesIncrementalRendering = NO;
|
||||
// 允许用户更改网页的设置
|
||||
configuration.preferences.javaScriptEnabled = YES;
|
||||
configuration.preferences.javaScriptCanOpenWindowsAutomatically = YES;
|
||||
configuration.userContentController = UserContentController;
|
||||
// 此处一定要做判断,因为是iOS9之后才有的方法,否则在iOS8下会崩溃
|
||||
if ([[UIDevice currentDevice].systemVersion floatValue] >= 9.0) {
|
||||
//允许视频播放
|
||||
configuration.allowsAirPlayForMediaPlayback = YES;
|
||||
// 允许在线播放
|
||||
configuration.allowsInlineMediaPlayback = YES;
|
||||
//开启手势触摸 默认设置就是NO。在ios8系统中会导致手势问题,程序崩溃
|
||||
_contentWebView.allowsBackForwardNavigationGestures = YES;
|
||||
}
|
||||
_contentWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, self.bgView.width, self.bgView.height) configuration:configuration];
|
||||
_contentWebView.backgroundColor = UIColor.clearColor;
|
||||
[_contentWebView addRoundedCornersWithRadius:6];
|
||||
_contentWebView.opaque = NO;
|
||||
//适应你设定的尺寸
|
||||
[_contentWebView sizeToFit];
|
||||
_contentWebView.scrollView.showsVerticalScrollIndicator = NO;
|
||||
_contentWebView.scrollView.backgroundColor = [UIColor clearColor];
|
||||
_contentWebView.scrollView.bounces = NO;
|
||||
// 设置代理
|
||||
}
|
||||
return _contentWebView;
|
||||
}
|
||||
|
||||
|
||||
|
||||
-(void)showInView:(UIView *)view{
|
||||
self.bgView.y = -SCREEN_HEIGHT;
|
||||
[view addSubview:self];
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
self.bgView.y = (self.height-ScaleWidth(492))/2-40;
|
||||
} completion:^(BOOL finished) {
|
||||
self.closeBtn.hidden = NO;
|
||||
}];
|
||||
}
|
||||
-(void)hide{
|
||||
self.closeBtn.hidden = YES;
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
self.bgView.y = SCREEN_HEIGHT;
|
||||
} completion:^(BOOL finished) {
|
||||
|
||||
[self removeFromSuperview];
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
22
QXLive/Mine(音域)/View/亲密关系/QXHeartBeatSpaceRecordCell.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// QXHeartBeatSpaceRecordCell.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/22.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXHeartBeatSpaceRecordCell : UITableViewCell
|
||||
@property (weak, nonatomic) IBOutlet QXSeatHeaderView *headerView;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *contentLabel;
|
||||
@property (strong, nonatomic)QXUserHeartBeatSpaceLogModel *model;
|
||||
@property (strong, nonatomic)NSString *userId;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
59
QXLive/Mine(音域)/View/亲密关系/QXHeartBeatSpaceRecordCell.m
Normal file
@@ -0,0 +1,59 @@
|
||||
//
|
||||
// QXHeartBeatSpaceRecordCell.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/22.
|
||||
//
|
||||
|
||||
#import "QXHeartBeatSpaceRecordCell.h"
|
||||
|
||||
@implementation QXHeartBeatSpaceRecordCell
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView{
|
||||
static NSString *cellId = @"QXHeartBeatSpaceRecordCell";
|
||||
QXHeartBeatSpaceRecordCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
|
||||
if (!cell) {
|
||||
cell = [[NSBundle mainBundle] loadNibNamed:cellId owner:nil options:nil].lastObject;
|
||||
cell.backgroundColor = [UIColor clearColor];
|
||||
cell.contentView.backgroundColor = [UIColor clearColor];
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
}
|
||||
|
||||
-(void)setModel:(QXUserHeartBeatSpaceLogModel *)model{
|
||||
_model = model;
|
||||
[self.headerView setHeadIcon:model.from_user_info.avatar dress:model.from_user_info.dress];
|
||||
NSDate *date = [NSDate dateWithTimeIntervalSince1970:model.createtime.longLongValue]; //此处根据项目需求,选择是否除以1000 , 如果时间戳精确到秒则去掉1000
|
||||
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
|
||||
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
|
||||
NSString*time = [formatter stringFromDate:date];
|
||||
self.timeLabel.text = time;
|
||||
self.nameLabel.text = model.from_user_info.nickname;
|
||||
UIColor *nameColor = RGB16(0xFF53CC);
|
||||
UIColor *contentNameColor = RGB16(0x4A89FF);
|
||||
NSString *content = [NSString stringWithFormat:@"%@",model.remark];
|
||||
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:content];
|
||||
|
||||
if ([model.from_user_id isEqualToString:self.userId] ) {
|
||||
self.nameLabel.textColor = nameColor;
|
||||
[attr yy_setColor:contentNameColor range:[content rangeOfString:model.to_user_info.nickname]];
|
||||
}else{
|
||||
self.nameLabel.textColor = contentNameColor;
|
||||
[attr yy_setColor:nameColor range:[content rangeOfString:model.to_user_info.nickname]];
|
||||
}
|
||||
self.contentLabel.attributedText = attr;
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
||||
[super setSelected:selected animated:animated];
|
||||
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
@end
|
||||
86
QXLive/Mine(音域)/View/亲密关系/QXHeartBeatSpaceRecordCell.xib
Normal file
@@ -0,0 +1,86 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="none" indentationWidth="10" rowHeight="307" id="KGk-i7-Jjw" customClass="QXHeartBeatSpaceRecordCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="516" height="307"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="516" height="307"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="kDB-P0-eAc" customClass="QXSeatHeaderView">
|
||||
<rect key="frame" x="16" y="16" width="48" height="48"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="48" id="2z8-8O-4vb"/>
|
||||
<constraint firstAttribute="height" constant="48" id="aX5-8B-RZa"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZRa-V2-B3h">
|
||||
<rect key="frame" x="72" y="20" width="35.333333333333343" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="2S3-wj-dYF"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="1" green="0.32549019607843138" blue="0.80000000000000004" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uCL-M4-5Hx">
|
||||
<rect key="frame" x="72" y="68" width="408" height="223"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3qb-wi-G90">
|
||||
<rect key="frame" x="16" y="306" width="484" height="1"/>
|
||||
<color key="backgroundColor" red="0.81568627450980391" green="0.81568627450980391" blue="0.81568627450980391" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="wlx-KN-3DQ"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AYF-oO-8tq">
|
||||
<rect key="frame" x="72" y="43" width="428" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="B9l-Hd-p4f"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.59999999999999998" green="0.59999999999999998" blue="0.59999999999999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="3qb-wi-G90" secondAttribute="trailing" constant="16" id="91k-0N-Wpr"/>
|
||||
<constraint firstItem="ZRa-V2-B3h" firstAttribute="top" secondItem="kDB-P0-eAc" secondAttribute="top" constant="4" id="Bny-jR-cys"/>
|
||||
<constraint firstAttribute="bottom" secondItem="uCL-M4-5Hx" secondAttribute="bottom" constant="16" id="CrK-CK-4Hs"/>
|
||||
<constraint firstItem="uCL-M4-5Hx" firstAttribute="leading" secondItem="ZRa-V2-B3h" secondAttribute="leading" id="P89-5y-Jqq"/>
|
||||
<constraint firstAttribute="trailingMargin" secondItem="uCL-M4-5Hx" secondAttribute="trailing" constant="16" id="VUI-pF-Aev"/>
|
||||
<constraint firstItem="kDB-P0-eAc" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="Xor-lq-pkP"/>
|
||||
<constraint firstItem="uCL-M4-5Hx" firstAttribute="top" secondItem="AYF-oO-8tq" secondAttribute="bottom" constant="8" id="XuR-uq-ICR"/>
|
||||
<constraint firstAttribute="bottom" secondItem="3qb-wi-G90" secondAttribute="bottom" id="YpW-IW-hTe"/>
|
||||
<constraint firstAttribute="trailing" secondItem="AYF-oO-8tq" secondAttribute="trailing" constant="16" id="fAd-RQ-39L"/>
|
||||
<constraint firstItem="kDB-P0-eAc" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="16" id="h9b-b5-5UI"/>
|
||||
<constraint firstItem="ZRa-V2-B3h" firstAttribute="leading" secondItem="kDB-P0-eAc" secondAttribute="trailing" constant="8" id="hLc-EK-j17"/>
|
||||
<constraint firstItem="AYF-oO-8tq" firstAttribute="leading" secondItem="ZRa-V2-B3h" secondAttribute="leading" id="jhq-zF-K72"/>
|
||||
<constraint firstItem="3qb-wi-G90" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="sub-hr-L9S"/>
|
||||
<constraint firstItem="AYF-oO-8tq" firstAttribute="bottom" secondItem="kDB-P0-eAc" secondAttribute="bottom" constant="-4" id="u8f-kW-vSK"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
|
||||
<connections>
|
||||
<outlet property="contentLabel" destination="uCL-M4-5Hx" id="Tco-Mw-PN0"/>
|
||||
<outlet property="headerView" destination="kDB-P0-eAc" id="qMe-nZ-45F"/>
|
||||
<outlet property="nameLabel" destination="ZRa-V2-B3h" id="uYk-gZ-QRb"/>
|
||||
<outlet property="timeLabel" destination="AYF-oO-8tq" id="WLP-Ta-oye"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="287.02290076335879" y="112.32394366197184"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
</document>
|
||||
@@ -119,6 +119,7 @@
|
||||
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
self.cpCardView.userId = userId;
|
||||
self.page = 1;
|
||||
[self getList];
|
||||
}
|
||||
@@ -159,6 +160,7 @@
|
||||
QXMoreIntimateViewController *vc = [[QXMoreIntimateViewController alloc] init];
|
||||
vc.userId = self.userId;
|
||||
vc.relation_id = md.relation_list.firstObject.relation_id;
|
||||
vc.relation_name = md.relation_name;
|
||||
[self.viewController.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
|
||||
@@ -175,11 +177,13 @@
|
||||
if (md.relation_list.count > 1) {
|
||||
QXIntimateListCell*cell = [QXIntimateListCell cellWithTableView:tableView];
|
||||
QXRoomBestFriendListModel *md = self.dataArray[indexPath.section];
|
||||
cell.userId = self.userId;
|
||||
cell.model = md;
|
||||
return cell;
|
||||
}else{
|
||||
MJWeakSelf
|
||||
QXIntimateMoreListCell *cell = [QXIntimateMoreListCell cellWithTableView:tableView];
|
||||
cell.userId = self.userId;
|
||||
cell.model = md.relation_list.firstObject;
|
||||
cell.deleteSuccessBlock = ^(QXRelationshipListModel * _Nonnull model) {
|
||||
weakSelf.page = 1;
|
||||
@@ -235,7 +239,7 @@
|
||||
|
||||
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXRoomBestFriendListModel *md = self.dataArray[indexPath.section];
|
||||
if (md.relation_list.count > 1) {
|
||||
if (md.relation_list.count == 1) {
|
||||
return ScaleWidth(92)+18;
|
||||
}else{
|
||||
if (md.relation_list.count == 0) {
|
||||
|
||||
@@ -6,11 +6,13 @@
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
#import "QXUserCpCardView.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXIntimateCpCell : UITableViewCell
|
||||
@property (nonatomic,strong)QXUserCpInfoModel *model;
|
||||
@property (nonatomic,strong)NSString *userId;
|
||||
@property (nonatomic,weak)id<QXUserCpCardViewDelegate>delegate;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
//
|
||||
|
||||
#import "QXIntimateCpCell.h"
|
||||
#import "QXUserCpCardView.h"
|
||||
@interface QXIntimateCpCell()
|
||||
|
||||
@interface QXIntimateCpCell()<QXUserCpCardViewDelegate>
|
||||
@property (nonatomic,strong)QXUserCpCardView *cardView;
|
||||
@end
|
||||
@implementation QXIntimateCpCell
|
||||
@@ -34,9 +34,13 @@
|
||||
_model = model;
|
||||
self.cardView.model = model;
|
||||
}
|
||||
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
self.cardView.userId = self.userId;
|
||||
}
|
||||
-(void)initSubviews{
|
||||
self.cardView = [[QXUserCpCardView alloc] init];
|
||||
self.cardView.delegate = self;
|
||||
[self.contentView addSubview:self.cardView];
|
||||
[self.cardView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(24);
|
||||
@@ -44,6 +48,17 @@
|
||||
make.top.bottom.equalTo(self.contentView);
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)didClickHeaderCardViewWithUserId:(NSString *)userId{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickHeaderCardViewWithUserId:)]) {
|
||||
[self.delegate didClickHeaderCardViewWithUserId:userId];
|
||||
}
|
||||
}
|
||||
-(void)didClickHeaderViewUserId:(NSString *)userId{
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickHeaderViewUserId:)]) {
|
||||
[self.delegate didClickHeaderViewUserId:userId];
|
||||
}
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
|
||||
@@ -11,6 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXIntimateListCell : UITableViewCell
|
||||
@property (nonatomic,strong)QXRoomBestFriendListModel *model;
|
||||
@property (nonatomic,strong)NSString *userId;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#import "QXIntimateListCell.h"
|
||||
#import "QXIntimateUserCell.h"
|
||||
|
||||
#import "QXUserHomePageViewController.h"
|
||||
@interface QXIntimateListCell()<UICollectionViewDataSource,UICollectionViewDelegate>
|
||||
@property (nonatomic,strong)UICollectionView *collectionView;
|
||||
@end
|
||||
@@ -68,9 +68,22 @@
|
||||
}
|
||||
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXIntimateUserCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXIntimateUserCell" forIndexPath:indexPath];
|
||||
cell.userId = self.userId;
|
||||
cell.model = self.model.relation_list[indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXRelationshipListModel *md = self.model.relation_list[indexPath.row];
|
||||
NSString *userId = @"";
|
||||
if ([md.user_id1 isEqualToString:self.userId]) {
|
||||
userId = md.user_id2;
|
||||
}else{
|
||||
userId = md.user_id1;
|
||||
}
|
||||
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
|
||||
vc.user_id = userId;
|
||||
[self.viewController.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
|
||||
@@ -8,7 +8,12 @@
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
@protocol QXIntimateMoreListCellDelegate <NSObject>
|
||||
|
||||
@optional
|
||||
-(void)didClickHeaderWithUserId:(NSString*)userId;
|
||||
|
||||
@end
|
||||
@interface QXIntimateMoreListCell : UITableViewCell
|
||||
@property (weak, nonatomic) IBOutlet QXSeatHeaderView *leftHeaderView;
|
||||
@property (weak, nonatomic) IBOutlet UIImageView *leftSexImageView;
|
||||
@@ -18,8 +23,10 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (weak, nonatomic) IBOutlet UILabel *rightNameLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;
|
||||
@property (nonatomic,strong)QXRelationshipListModel *model;
|
||||
@property (nonatomic,strong)NSString *userId;
|
||||
@property (nonatomic,copy)void(^topSuccessBlock)(QXRelationshipListModel*model);
|
||||
@property (nonatomic,copy)void(^deleteSuccessBlock)(QXRelationshipListModel*model);
|
||||
@property (nonatomic,weak)id<QXIntimateMoreListCellDelegate>delegate;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
|
||||
@@ -67,25 +67,41 @@
|
||||
}];
|
||||
}
|
||||
|
||||
- (IBAction)leftAction:(id)sender {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickHeaderWithUserId:)]) {
|
||||
[self.delegate didClickHeaderWithUserId:self.userId];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
- (IBAction)rightAction:(id)sender {
|
||||
NSString *userId = @"";
|
||||
if ([self.model.user_id1 isEqualToString:self.userId]) {
|
||||
userId = self.model.user_id2;
|
||||
}else{
|
||||
userId = self.model.user_id1;
|
||||
}
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(didClickHeaderWithUserId:)]) {
|
||||
[self.delegate didClickHeaderWithUserId:userId];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)setModel:(QXRelationshipListModel *)model{
|
||||
_model = model;
|
||||
if ([model.user_id1 isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||
[self.leftHeaderView setHeadIcon:model.avatar2 dress:@""];
|
||||
self.leftNameLabel.text = model.nickname2;
|
||||
self.leftSexImageView.image = [UIImage imageNamed:model.sex2.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
[self.rightHeaderView setHeadIcon:model.avatar1 dress:@""];
|
||||
self.rightNameLabel.text = model.nickname1;
|
||||
self.rightSexImageView.image = [UIImage imageNamed:model.sex1.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
}else{
|
||||
if ([model.user_id1 isEqualToString:self.userId]) {
|
||||
[self.leftHeaderView setHeadIcon:model.avatar1 dress:@""];
|
||||
self.leftNameLabel.text = model.nickname1;
|
||||
self.leftSexImageView.image = [UIImage imageNamed:model.sex1.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
[self.rightHeaderView setHeadIcon:model.avatar2 dress:@""];
|
||||
self.rightNameLabel.text = model.nickname2;
|
||||
self.rightSexImageView.image = [UIImage imageNamed:model.sex2.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
}else{
|
||||
[self.leftHeaderView setHeadIcon:model.avatar2 dress:@""];
|
||||
self.leftNameLabel.text = model.nickname2;
|
||||
self.leftSexImageView.image = [UIImage imageNamed:model.sex2.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
[self.rightHeaderView setHeadIcon:model.avatar1 dress:@""];
|
||||
self.rightNameLabel.text = model.nickname1;
|
||||
self.rightSexImageView.image = [UIImage imageNamed:model.sex2.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
}
|
||||
NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
|
||||
long long milliseconds = (long long)(currentTime);
|
||||
|
||||
@@ -30,6 +30,19 @@
|
||||
<constraint firstAttribute="width" constant="50" id="f4E-eT-Fu8"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eAs-09-73J">
|
||||
<rect key="frame" x="46.666666666666671" y="66" width="33" height="16"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.36078431372549019" green="0.16470588235294117" blue="0.44313725490196076" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xap-Up-DHk">
|
||||
<rect key="frame" x="38" y="12" width="50" height="70"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<connections>
|
||||
<action selector="leftAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="r31-OZ-CWl"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="fJj-mx-2yM">
|
||||
<rect key="frame" x="72" y="46" width="16" height="16"/>
|
||||
<constraints>
|
||||
@@ -70,35 +83,44 @@
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eAs-09-73J">
|
||||
<rect key="frame" x="46.666666666666671" y="66" width="33" height="16"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.36078431372549019" green="0.16470588235294117" blue="0.44313725490196076" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tuv-zg-sBW">
|
||||
<rect key="frame" x="343.66666666666669" y="66" width="33" height="16"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.36078431372549019" green="0.16470588235294117" blue="0.44313725490196076" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SsY-uu-WFL">
|
||||
<rect key="frame" x="335" y="12" width="50" height="70"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<connections>
|
||||
<action selector="rightAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="c6p-5f-wxW"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="50s-uU-EKD" firstAttribute="centerY" secondItem="pS6-S4-a2G" secondAttribute="centerY" id="5g4-vp-EYv"/>
|
||||
<constraint firstItem="SsY-uu-WFL" firstAttribute="top" secondItem="50s-uU-EKD" secondAttribute="top" id="8be-wg-JP2"/>
|
||||
<constraint firstItem="8wc-ZY-rQa" firstAttribute="top" secondItem="dAK-uZ-bVb" secondAttribute="bottom" constant="5" id="8rk-dg-kaQ"/>
|
||||
<constraint firstItem="fJj-mx-2yM" firstAttribute="trailing" secondItem="pS6-S4-a2G" secondAttribute="trailing" id="BEj-jg-gAB"/>
|
||||
<constraint firstItem="dAK-uZ-bVb" firstAttribute="top" secondItem="9uF-c2-o0x" secondAttribute="top" constant="24" id="D9p-BA-KBw"/>
|
||||
<constraint firstItem="6nc-bo-ejr" firstAttribute="bottom" secondItem="50s-uU-EKD" secondAttribute="bottom" id="FGe-n1-Wks"/>
|
||||
<constraint firstItem="pS6-S4-a2G" firstAttribute="leading" secondItem="9uF-c2-o0x" secondAttribute="leading" constant="38" id="H5c-Mz-Qma"/>
|
||||
<constraint firstItem="SsY-uu-WFL" firstAttribute="leading" secondItem="50s-uU-EKD" secondAttribute="leading" id="Rl2-c0-BBe"/>
|
||||
<constraint firstItem="dAK-uZ-bVb" firstAttribute="centerX" secondItem="9uF-c2-o0x" secondAttribute="centerX" id="VG0-8q-Lrq"/>
|
||||
<constraint firstAttribute="trailing" secondItem="50s-uU-EKD" secondAttribute="trailing" constant="38" id="Wh8-QI-j4t"/>
|
||||
<constraint firstItem="xap-Up-DHk" firstAttribute="leading" secondItem="pS6-S4-a2G" secondAttribute="leading" id="YQL-gI-xBB"/>
|
||||
<constraint firstItem="pS6-S4-a2G" firstAttribute="top" secondItem="9uF-c2-o0x" secondAttribute="top" constant="12" id="YtX-oa-Z5o"/>
|
||||
<constraint firstItem="SsY-uu-WFL" firstAttribute="bottom" secondItem="tuv-zg-sBW" secondAttribute="bottom" id="a00-qT-gYV"/>
|
||||
<constraint firstItem="fJj-mx-2yM" firstAttribute="bottom" secondItem="pS6-S4-a2G" secondAttribute="bottom" id="a5l-4I-UsC"/>
|
||||
<constraint firstItem="tuv-zg-sBW" firstAttribute="centerX" secondItem="50s-uU-EKD" secondAttribute="centerX" id="eA4-hx-xId"/>
|
||||
<constraint firstItem="eAs-09-73J" firstAttribute="top" secondItem="pS6-S4-a2G" secondAttribute="bottom" constant="4" id="inp-kG-exH"/>
|
||||
<constraint firstItem="6nc-bo-ejr" firstAttribute="trailing" secondItem="50s-uU-EKD" secondAttribute="trailing" id="j7A-eO-KSJ"/>
|
||||
<constraint firstItem="xap-Up-DHk" firstAttribute="top" secondItem="pS6-S4-a2G" secondAttribute="top" id="k1J-S0-BPd"/>
|
||||
<constraint firstItem="SsY-uu-WFL" firstAttribute="trailing" secondItem="50s-uU-EKD" secondAttribute="trailing" id="rQE-om-5xf"/>
|
||||
<constraint firstItem="eAs-09-73J" firstAttribute="centerX" secondItem="pS6-S4-a2G" secondAttribute="centerX" id="smC-jH-4iI"/>
|
||||
<constraint firstItem="xap-Up-DHk" firstAttribute="bottom" secondItem="eAs-09-73J" secondAttribute="bottom" id="ssk-yf-L3c"/>
|
||||
<constraint firstItem="8wc-ZY-rQa" firstAttribute="centerX" secondItem="9uF-c2-o0x" secondAttribute="centerX" id="uKd-PA-s9w"/>
|
||||
<constraint firstItem="xap-Up-DHk" firstAttribute="trailing" secondItem="pS6-S4-a2G" secondAttribute="trailing" id="v5j-a8-69s"/>
|
||||
<constraint firstItem="tuv-zg-sBW" firstAttribute="top" secondItem="50s-uU-EKD" secondAttribute="bottom" constant="4" id="yjp-7F-Gwe"/>
|
||||
</constraints>
|
||||
</view>
|
||||
|
||||
@@ -14,6 +14,7 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
|
||||
@property (weak, nonatomic) IBOutlet QXSeatHeaderView *headerView;
|
||||
@property (weak, nonatomic) IBOutlet UIImageView *sexImageView;
|
||||
@property (nonatomic,strong)NSString* userId;
|
||||
@property (nonatomic,strong)QXRelationshipListModel *model;
|
||||
@end
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
@implementation QXIntimateUserCell
|
||||
-(void)setModel:(QXRelationshipListModel *)model{
|
||||
_model = model;
|
||||
if ([model.user_id1 isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
|
||||
if ([model.user_id1 isEqualToString:self.userId]) {
|
||||
[self.headerView setHeadIcon:model.avatar2 dress:@""];
|
||||
self.nameLabel.text = model.nickname2;
|
||||
self.sexImageView.image = [UIImage imageNamed:model.sex2.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
@@ -19,9 +19,15 @@
|
||||
self.nameLabel.text = model.nickname1;
|
||||
self.sexImageView.image = [UIImage imageNamed:model.sex1.intValue == 1?@"user_sex_boy":@"user_sex_girl"];
|
||||
}
|
||||
self.timeLabel.text = [NSString getTimeWithSecond:model.end_time.longLongValue];
|
||||
NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
|
||||
long long milliseconds = (long long)(currentTime);
|
||||
NSInteger time = model.end_time.longLongValue - milliseconds;
|
||||
self.timeLabel.text = [NSString stringWithFormat:@" %@ ",[NSString getTimeWithSecond:time]];
|
||||
|
||||
}
|
||||
-(void)setUserId:(NSString *)userId{
|
||||
_userId = userId;
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
|
||||
29
QXLive/Mine(音域)/View/家族/QXFamilyMemberCell.h
Normal file
@@ -0,0 +1,29 @@
|
||||
//
|
||||
// QXFamilyMemberCell.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXFamilyModel.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXFamilyMemberCell : UITableViewCell
|
||||
@property (weak, nonatomic) IBOutlet QXSeatHeaderView *headerView;
|
||||
@property (weak, nonatomic) IBOutlet UICollectionView *collectionView;
|
||||
@property (weak, nonatomic) IBOutlet UICollectionViewFlowLayout *flowLayout;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *dayLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *timesLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *priceBtn;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *onlineLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *todayPriceBtn;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *yestodayPriceBtn;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *continueBtn;
|
||||
@property (strong, nonatomic) QXFamilyMemberModel *model;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
82
QXLive/Mine(音域)/View/家族/QXFamilyMemberCell.m
Normal file
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// QXFamilyMemberCell.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXFamilyMemberCell.h"
|
||||
#import "QXUserHomeHeaderView.h"
|
||||
#import "QXCustomAlertView.h"
|
||||
@interface QXFamilyMemberCell()<UICollectionViewDataSource,UICollectionViewDelegate>
|
||||
@end
|
||||
@implementation QXFamilyMemberCell
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView{
|
||||
static NSString *cellId = @"QXFamilyMemberCell";
|
||||
QXFamilyMemberCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
|
||||
if (!cell) {
|
||||
cell = [[NSBundle mainBundle] loadNibNamed:cellId owner:nil options:nil].lastObject;
|
||||
cell.flowLayout.itemSize = CGSizeMake(UserIconWidth, UserIconHeight);
|
||||
cell.flowLayout.minimumLineSpacing = 7;
|
||||
cell.flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;
|
||||
cell.collectionView.dataSource = cell;
|
||||
cell.collectionView.delegate = cell;
|
||||
cell.collectionView.backgroundColor = UIColor.clearColor;
|
||||
[cell.collectionView registerClass:[QXTagImageCell class] forCellWithReuseIdentifier:@"QXTagImageCell"];
|
||||
cell.backgroundColor = [UIColor clearColor];
|
||||
cell.contentView.backgroundColor = [UIColor clearColor];
|
||||
cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
}
|
||||
-(void)setModel:(QXFamilyMemberModel *)model{
|
||||
_model = model;
|
||||
[self.headerView setHeadIcon:model.nickname dress:model.dress];
|
||||
[self.headerView.nobilityImageView sd_setImageWithURL:[NSURL URLWithString:model.nobility_image]];
|
||||
self.dayLabel.text = [NSString stringWithFormat:@"剩余租期:%@",model.end_day];
|
||||
self.timesLabel.text = [NSString stringWithFormat:@"免费续约次数:%@",model.free_renewal];
|
||||
self.nameLabel.text = model.nickname;
|
||||
[self.todayPriceBtn setTitle:model.today_earnings forState:(UIControlStateNormal)];
|
||||
[self.yestodayPriceBtn setTitle:model.yesterday_earnings forState:(UIControlStateNormal)];
|
||||
[self.priceBtn setTitle:model.market_value forState:(UIControlStateNormal)];
|
||||
self.onlineLabel.text = model.is_online==1?@"当前在线":@"当前离线";
|
||||
self.continueBtn.hidden = model.is_show_sign.intValue==1?NO:YES;
|
||||
}
|
||||
- (IBAction)continueAction:(id)sender {
|
||||
QXCustomAlertView *al = [[QXCustomAlertView alloc] init];
|
||||
al.title = @"续约提示";
|
||||
al.message = @"尊敬的用户: 您的徒弟【夏沫】当前为首次签约的 免费续约期。续约后,徒弟合约将延长7天,您剩余的免费续约次数:1次";
|
||||
al.cancleTitle = @"取消";
|
||||
al.commitTitle = @"确认续约";
|
||||
al.isFromController = YES;
|
||||
al.cancelBlock = ^{
|
||||
[[QXGlobal shareGlobal] hideViewBlock:nil];
|
||||
};
|
||||
al.commitBlock = ^{
|
||||
[[QXGlobal shareGlobal] hideViewBlock:nil];
|
||||
};
|
||||
[QXGlobal.shareGlobal showView:al popType:(PopViewTypeTopToCenter) tapDismiss:NO finishBlock:nil];
|
||||
// [al showInView:self.viewController.view title:@"续约提示" message:@"尊敬的用户: 您的徒弟【夏沫】当前为首次签约的 免费续约期。续约后,徒弟合约将延长7天,您剩余的免费续约次数:1次" cancleTitle:@"取消" commitTitle:@"确认续约"];
|
||||
}
|
||||
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
||||
if (self.model==nil) {
|
||||
return 0;
|
||||
}
|
||||
return self.model.icon.count;
|
||||
}
|
||||
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
QXTagImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXTagImageCell" forIndexPath:indexPath];
|
||||
cell.imageUrl = self.model.icon[indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
||||
[super setSelected:selected animated:animated];
|
||||
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
@end
|
||||
267
QXLive/Mine(音域)/View/家族/QXFamilyMemberCell.xib
Normal file
@@ -0,0 +1,267 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="178" id="KGk-i7-Jjw" customClass="QXFamilyMemberCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="178"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="178"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="iH0-Pj-t8s">
|
||||
<rect key="frame" x="16" y="6" width="343" height="166"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="family_top_member_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Msn-nc-t9D">
|
||||
<rect key="frame" x="0.0" y="0.0" width="343" height="166"/>
|
||||
</imageView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uXg-p7-J2S" customClass="QXSeatHeaderView">
|
||||
<rect key="frame" x="18" y="12" width="52" height="68"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="68" id="bCB-eE-Zr3"/>
|
||||
<constraint firstAttribute="width" constant="52" id="h5x-rL-px2"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="Xpt-NC-KbR">
|
||||
<rect key="frame" x="90" y="14" width="242" height="19"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="19" id="mpP-Tm-mjr"/>
|
||||
</constraints>
|
||||
<collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="ErA-Km-MvK">
|
||||
<size key="itemSize" width="128" height="128"/>
|
||||
<size key="headerReferenceSize" width="0.0" height="0.0"/>
|
||||
<size key="footerReferenceSize" width="0.0" height="0.0"/>
|
||||
<inset key="sectionInset" minX="0.0" minY="0.0" maxX="0.0" maxY="0.0"/>
|
||||
</collectionViewFlowLayout>
|
||||
<connections>
|
||||
<outlet property="dataSource" destination="-1" id="neF-wi-DOJ"/>
|
||||
<outlet property="delegate" destination="-1" id="JgI-Be-tW3"/>
|
||||
</connections>
|
||||
</collectionView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="剩余租期:5天" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3c8-yw-ZcY">
|
||||
<rect key="frame" x="90" y="43" width="80.666666666666686" height="14.333333333333336"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="张三张三张三" textAlignment="center" lineBreakMode="clip" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AEg-Tu-ye6">
|
||||
<rect key="frame" x="8" y="88" width="72" height="19.333333333333329"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="免费续约次数:3次" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="D6h-bE-tlh">
|
||||
<rect key="frame" x="90" y="65.333333333333329" width="104.66666666666669" height="14.333333333333329"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BVQ-z4-fHs">
|
||||
<rect key="frame" x="26" y="111.33333333333333" width="36" height="19.999999999999986"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="10" image="mine_recharge_corn">
|
||||
<color key="titleColor" red="1" green="0.15294117647058825" blue="0.15294117647058825" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="当前在线" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cha-OZ-i3U">
|
||||
<rect key="frame" x="20" y="136.33333333333334" width="48" height="15"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.22745098039215686" green="0.73725490196078436" blue="0.42745098039215684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="VGe-Cc-S6Q">
|
||||
<rect key="frame" x="90" y="87.666666666666686" width="85" height="66.333333333333314"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="今日" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fxt-Ok-e8L">
|
||||
<rect key="frame" x="30.666666666666657" y="4" width="24" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="xrg-jZ-zdc"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="收礼盈利" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9wb-6a-aQt">
|
||||
<rect key="frame" x="18.666666666666671" y="23" width="48" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="AoH-Ct-GM9"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dpa-gV-fxG">
|
||||
<rect key="frame" x="2" y="41.999999999999986" width="81" height="22.333333333333329"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="10" image="family_diamond">
|
||||
<color key="titleColor" red="1" green="0.1529411765" blue="0.1529411765" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.85490196078431369" green="1" blue="0.88627450980392153" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="fxt-Ok-e8L" firstAttribute="centerX" secondItem="VGe-Cc-S6Q" secondAttribute="centerX" id="2pr-cg-4QY"/>
|
||||
<constraint firstAttribute="width" constant="85" id="FPA-42-3py"/>
|
||||
<constraint firstItem="9wb-6a-aQt" firstAttribute="top" secondItem="fxt-Ok-e8L" secondAttribute="bottom" constant="2" id="RzV-mu-ufj"/>
|
||||
<constraint firstAttribute="bottom" secondItem="dpa-gV-fxG" secondAttribute="bottom" constant="2" id="dtB-XL-hOC"/>
|
||||
<constraint firstItem="fxt-Ok-e8L" firstAttribute="top" secondItem="VGe-Cc-S6Q" secondAttribute="top" constant="4" id="ef4-nR-Mji"/>
|
||||
<constraint firstItem="9wb-6a-aQt" firstAttribute="centerX" secondItem="VGe-Cc-S6Q" secondAttribute="centerX" id="iSE-Sg-0b1"/>
|
||||
<constraint firstItem="dpa-gV-fxG" firstAttribute="top" secondItem="9wb-6a-aQt" secondAttribute="bottom" constant="2" id="ruM-mP-Gsq"/>
|
||||
<constraint firstItem="dpa-gV-fxG" firstAttribute="leading" secondItem="VGe-Cc-S6Q" secondAttribute="leading" constant="2" id="wGY-6r-6Bn"/>
|
||||
<constraint firstAttribute="trailing" secondItem="dpa-gV-fxG" secondAttribute="trailing" constant="2" id="xBG-GO-NWJ"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="4"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oGH-dJ-lZy">
|
||||
<rect key="frame" x="179" y="87.666666666666686" width="85" height="66.333333333333314"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="昨日" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KF6-Jg-pqn">
|
||||
<rect key="frame" x="30.666666666666657" y="4" width="24" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="2Du-Vr-MGL"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="收礼盈利" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rjt-H4-heD">
|
||||
<rect key="frame" x="18.666666666666657" y="23" width="48" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="nAr-LR-mvb"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3Ml-mg-Cxw">
|
||||
<rect key="frame" x="2" y="41.999999999999986" width="81" height="22.333333333333329"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="10" image="family_diamond">
|
||||
<color key="titleColor" red="1" green="0.1529411765" blue="0.1529411765" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.85490196080000003" green="1" blue="0.8862745098" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="3Ml-mg-Cxw" secondAttribute="trailing" constant="2" id="4Wk-yD-BbV"/>
|
||||
<constraint firstItem="Rjt-H4-heD" firstAttribute="top" secondItem="KF6-Jg-pqn" secondAttribute="bottom" constant="2" id="F2T-k5-Kgv"/>
|
||||
<constraint firstAttribute="bottom" secondItem="3Ml-mg-Cxw" secondAttribute="bottom" constant="2" id="LJz-rW-T02"/>
|
||||
<constraint firstItem="Rjt-H4-heD" firstAttribute="centerX" secondItem="oGH-dJ-lZy" secondAttribute="centerX" id="O15-tt-LOO"/>
|
||||
<constraint firstAttribute="width" constant="85" id="bmv-lS-3aZ"/>
|
||||
<constraint firstItem="3Ml-mg-Cxw" firstAttribute="leading" secondItem="oGH-dJ-lZy" secondAttribute="leading" constant="2" id="g7c-ng-N2i"/>
|
||||
<constraint firstItem="3Ml-mg-Cxw" firstAttribute="top" secondItem="Rjt-H4-heD" secondAttribute="bottom" constant="2" id="jfG-L6-goi"/>
|
||||
<constraint firstItem="KF6-Jg-pqn" firstAttribute="top" secondItem="oGH-dJ-lZy" secondAttribute="top" constant="4" id="udE-f7-Bn7"/>
|
||||
<constraint firstItem="KF6-Jg-pqn" firstAttribute="centerX" secondItem="oGH-dJ-lZy" secondAttribute="centerX" id="xZZ-80-b2m"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="4"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="v1E-D6-JeF">
|
||||
<rect key="frame" x="278" y="126" width="60" height="28"/>
|
||||
<color key="backgroundColor" red="0.22745098039215686" green="0.73725490196078436" blue="0.42745098039215684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="28" id="C6z-41-oB8"/>
|
||||
<constraint firstAttribute="width" constant="60" id="Qmm-ha-usv"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="续租"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="14"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="continueAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="0Dk-bG-uLt"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="VGe-Cc-S6Q" firstAttribute="top" secondItem="D6h-bE-tlh" secondAttribute="bottom" constant="8" id="0xl-vd-Eab"/>
|
||||
<constraint firstItem="Xpt-NC-KbR" firstAttribute="top" secondItem="iH0-Pj-t8s" secondAttribute="top" constant="14" id="0yY-Uq-uIw"/>
|
||||
<constraint firstItem="uXg-p7-J2S" firstAttribute="top" secondItem="iH0-Pj-t8s" secondAttribute="top" constant="12" id="3Up-H8-deH"/>
|
||||
<constraint firstItem="BVQ-z4-fHs" firstAttribute="top" secondItem="AEg-Tu-ye6" secondAttribute="bottom" constant="4" id="45o-bc-VTo"/>
|
||||
<constraint firstItem="3c8-yw-ZcY" firstAttribute="leading" secondItem="Xpt-NC-KbR" secondAttribute="leading" id="7he-6a-LQn"/>
|
||||
<constraint firstAttribute="bottom" secondItem="VGe-Cc-S6Q" secondAttribute="bottom" constant="12" id="87e-jS-o6v"/>
|
||||
<constraint firstItem="D6h-bE-tlh" firstAttribute="top" secondItem="3c8-yw-ZcY" secondAttribute="bottom" constant="8" id="GX3-ge-Kid"/>
|
||||
<constraint firstItem="AEg-Tu-ye6" firstAttribute="leading" secondItem="uXg-p7-J2S" secondAttribute="leading" constant="-10" id="Ggr-Ur-BTo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Xpt-NC-KbR" secondAttribute="trailing" constant="11" id="IrF-U1-Mro"/>
|
||||
<constraint firstItem="AEg-Tu-ye6" firstAttribute="top" secondItem="uXg-p7-J2S" secondAttribute="bottom" constant="8" id="J9W-JM-n7A"/>
|
||||
<constraint firstItem="VGe-Cc-S6Q" firstAttribute="leading" secondItem="Xpt-NC-KbR" secondAttribute="leading" id="Jsy-KK-zrr"/>
|
||||
<constraint firstItem="Msn-nc-t9D" firstAttribute="top" secondItem="iH0-Pj-t8s" secondAttribute="top" id="Rk3-kc-29m"/>
|
||||
<constraint firstItem="D6h-bE-tlh" firstAttribute="leading" secondItem="Xpt-NC-KbR" secondAttribute="leading" id="WX5-EF-GjZ"/>
|
||||
<constraint firstItem="v1E-D6-JeF" firstAttribute="bottom" secondItem="VGe-Cc-S6Q" secondAttribute="bottom" id="Xhb-uf-REu"/>
|
||||
<constraint firstItem="oGH-dJ-lZy" firstAttribute="top" secondItem="VGe-Cc-S6Q" secondAttribute="top" id="bvy-kk-VyI"/>
|
||||
<constraint firstItem="oGH-dJ-lZy" firstAttribute="bottom" secondItem="VGe-Cc-S6Q" secondAttribute="bottom" id="fer-eg-Q8u"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Msn-nc-t9D" secondAttribute="trailing" id="gQ1-bd-h8C"/>
|
||||
<constraint firstItem="uXg-p7-J2S" firstAttribute="leading" secondItem="iH0-Pj-t8s" secondAttribute="leading" constant="18" id="jUx-NP-cQj"/>
|
||||
<constraint firstItem="AEg-Tu-ye6" firstAttribute="trailing" secondItem="uXg-p7-J2S" secondAttribute="trailing" constant="10" id="nNH-Kq-QmX"/>
|
||||
<constraint firstItem="Xpt-NC-KbR" firstAttribute="leading" secondItem="uXg-p7-J2S" secondAttribute="trailing" constant="20" id="p9M-CF-kU5"/>
|
||||
<constraint firstItem="oGH-dJ-lZy" firstAttribute="leading" secondItem="VGe-Cc-S6Q" secondAttribute="trailing" constant="4" id="qvY-IN-Sh2"/>
|
||||
<constraint firstItem="cha-OZ-i3U" firstAttribute="centerX" secondItem="uXg-p7-J2S" secondAttribute="centerX" id="r8z-sa-uZA"/>
|
||||
<constraint firstItem="cha-OZ-i3U" firstAttribute="top" secondItem="BVQ-z4-fHs" secondAttribute="bottom" constant="5" id="ri0-KS-mht"/>
|
||||
<constraint firstAttribute="trailing" secondItem="v1E-D6-JeF" secondAttribute="trailing" constant="5" id="t3Y-Ci-cqO"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Msn-nc-t9D" secondAttribute="bottom" id="vAB-on-UgX"/>
|
||||
<constraint firstItem="3c8-yw-ZcY" firstAttribute="top" secondItem="Xpt-NC-KbR" secondAttribute="bottom" constant="10" id="vo1-0c-qqk"/>
|
||||
<constraint firstItem="Msn-nc-t9D" firstAttribute="leading" secondItem="iH0-Pj-t8s" secondAttribute="leading" id="xki-e1-3Kn"/>
|
||||
<constraint firstItem="BVQ-z4-fHs" firstAttribute="centerX" secondItem="uXg-p7-J2S" secondAttribute="centerX" id="zMn-Oa-xMf"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="12"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="iH0-Pj-t8s" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="6" id="Qrb-JX-7dX"/>
|
||||
<constraint firstItem="iH0-Pj-t8s" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="VM1-pJ-dqP"/>
|
||||
<constraint firstAttribute="trailing" secondItem="iH0-Pj-t8s" secondAttribute="trailing" constant="16" id="ng7-pJ-1Mx"/>
|
||||
<constraint firstAttribute="bottom" secondItem="iH0-Pj-t8s" secondAttribute="bottom" constant="6" id="qzE-xj-NKp"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
|
||||
<connections>
|
||||
<outlet property="collectionView" destination="Xpt-NC-KbR" id="pmE-BS-kUl"/>
|
||||
<outlet property="continueBtn" destination="v1E-D6-JeF" id="Srn-jh-maM"/>
|
||||
<outlet property="dayLabel" destination="3c8-yw-ZcY" id="MbY-ho-AdO"/>
|
||||
<outlet property="flowLayout" destination="ErA-Km-MvK" id="hkS-jB-9fF"/>
|
||||
<outlet property="headerView" destination="uXg-p7-J2S" id="P7X-to-hlT"/>
|
||||
<outlet property="nameLabel" destination="AEg-Tu-ye6" id="mys-qk-wdQ"/>
|
||||
<outlet property="onlineLabel" destination="cha-OZ-i3U" id="CqR-eC-65V"/>
|
||||
<outlet property="priceBtn" destination="BVQ-z4-fHs" id="CwE-cf-JVh"/>
|
||||
<outlet property="timesLabel" destination="D6h-bE-tlh" id="Npo-LQ-mYv"/>
|
||||
<outlet property="todayPriceBtn" destination="dpa-gV-fxG" id="tLX-md-1HV"/>
|
||||
<outlet property="yestodayPriceBtn" destination="3Ml-mg-Cxw" id="kIm-ei-YWd"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="257.25190839694653" y="66.901408450704224"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="family_diamond" width="14" height="14"/>
|
||||
<image name="family_top_member_bg" width="343" height="164"/>
|
||||
<image name="mine_recharge_corn" width="20" height="20"/>
|
||||
</resources>
|
||||
</document>
|
||||
22
QXLive/Mine(音域)/View/家族/QXFamilyPriceRecordCell.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// QXFamilyPriceRecordCell.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXFamilyModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXFamilyPriceRecordCell : UITableViewCell
|
||||
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *giftLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *giftPriceLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *timeLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *moneyLabel;
|
||||
@property (strong, nonatomic) QXFamilyEarningModel *model;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
45
QXLive/Mine(音域)/View/家族/QXFamilyPriceRecordCell.m
Normal file
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// QXFamilyPriceRecordCell.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXFamilyPriceRecordCell.h"
|
||||
|
||||
@implementation QXFamilyPriceRecordCell
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView{
|
||||
static NSString *cellId = @"QXFamilyPriceRecordCell";
|
||||
QXFamilyPriceRecordCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
|
||||
if (!cell) {
|
||||
cell = [[NSBundle mainBundle] loadNibNamed:cellId owner:nil options:nil].lastObject;
|
||||
cell.backgroundColor = [UIColor clearColor];
|
||||
cell.contentView.backgroundColor = [UIColor clearColor];
|
||||
cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
-(void)setModel:(QXFamilyEarningModel *)model{
|
||||
_model = model;
|
||||
self.nameLabel.text = model.nickname;
|
||||
self.giftLabel.text = [NSString stringWithFormat:@"礼物名称:%@",model.gift_name];
|
||||
self.giftPriceLabel.text = [NSString stringWithFormat:@"礼物金额:%@",model.gift_price];
|
||||
NSDate *date = [NSDate dateWithTimeIntervalSince1970:model.createtime.longLongValue]; //此处根据项目需求,选择是否除以1000 , 如果时间戳精确到秒则去掉1000
|
||||
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
|
||||
formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
|
||||
NSString*time = [formatter stringFromDate:date];
|
||||
self.timeLabel.text = time;
|
||||
self.moneyLabel.text = [NSString stringWithFormat:@"+%@",model.earnings];
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
||||
[super setSelected:selected animated:animated];
|
||||
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
@end
|
||||
109
QXLive/Mine(音域)/View/家族/QXFamilyPriceRecordCell.xib
Normal file
@@ -0,0 +1,109 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="115" id="KGk-i7-Jjw" customClass="QXFamilyPriceRecordCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="437" height="115"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="437" height="115"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="夏末" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qhY-xK-j4V">
|
||||
<rect key="frame" x="16" y="12" width="28" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="yEo-s3-dl7"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="礼物名称:娃哈哈" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HJ8-fz-wWx">
|
||||
<rect key="frame" x="16" y="36" width="87" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="9Tr-bc-dxx"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.65098039215686276" green="0.65098039215686276" blue="0.65098039215686276" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="礼物金额:2.00" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1Ye-0Q-Ars">
|
||||
<rect key="frame" x="16" y="57" width="76.666666666666671" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="D9K-U1-SJT"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.65098039220000004" green="0.65098039220000004" blue="0.65098039220000004" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="时间:2024.12.14 11:21:45" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="K90-F2-gDK">
|
||||
<rect key="frame" x="16" y="78" width="138.66666666666666" height="17"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="17" id="NXB-k6-bcp"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="12"/>
|
||||
<color key="textColor" red="0.65098039220000004" green="0.65098039220000004" blue="0.65098039220000004" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="flF-ys-FmL">
|
||||
<rect key="frame" x="0.0" y="114" width="437" height="1"/>
|
||||
<color key="backgroundColor" red="0.94509803921568625" green="0.94901960784313721" blue="0.95294117647058818" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="1" id="Je4-fq-8DP"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="family_diamond" translatesAutoresizingMaskIntoConstraints="NO" id="Epl-Tk-yAO">
|
||||
<rect key="frame" x="405" y="16" width="16" height="16"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="16" id="8jn-qK-laY"/>
|
||||
<constraint firstAttribute="height" constant="16" id="yT0-QV-hOt"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="+10" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ykc-S1-6gP">
|
||||
<rect key="frame" x="375" y="14.333333333333334" width="29" height="19.333333333333329"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="0.15294117647058825" blue="0.15294117647058825" alpha="1" colorSpace="calibratedRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="flF-ys-FmL" secondAttribute="trailing" id="1jc-En-ojk"/>
|
||||
<constraint firstItem="Epl-Tk-yAO" firstAttribute="leading" secondItem="ykc-S1-6gP" secondAttribute="trailing" constant="1" id="41O-42-s4J"/>
|
||||
<constraint firstItem="qhY-xK-j4V" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="12" id="4ZR-PO-QSD"/>
|
||||
<constraint firstItem="Epl-Tk-yAO" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="16" id="51M-Qu-JSa"/>
|
||||
<constraint firstItem="ykc-S1-6gP" firstAttribute="centerY" secondItem="Epl-Tk-yAO" secondAttribute="centerY" id="CuU-6Q-HHr"/>
|
||||
<constraint firstItem="flF-ys-FmL" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" id="RIQ-sW-mWT"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Epl-Tk-yAO" secondAttribute="trailing" constant="16" id="RW9-oL-s1o"/>
|
||||
<constraint firstItem="K90-F2-gDK" firstAttribute="top" secondItem="1Ye-0Q-Ars" secondAttribute="bottom" constant="4" id="Z6j-2T-Z0T"/>
|
||||
<constraint firstItem="1Ye-0Q-Ars" firstAttribute="leading" secondItem="qhY-xK-j4V" secondAttribute="leading" id="ZCB-0t-61d"/>
|
||||
<constraint firstItem="1Ye-0Q-Ars" firstAttribute="top" secondItem="HJ8-fz-wWx" secondAttribute="bottom" constant="4" id="bzk-lp-22S"/>
|
||||
<constraint firstItem="qhY-xK-j4V" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="eQd-xw-aT2"/>
|
||||
<constraint firstItem="HJ8-fz-wWx" firstAttribute="top" secondItem="qhY-xK-j4V" secondAttribute="bottom" constant="4" id="gJu-uP-c6T"/>
|
||||
<constraint firstAttribute="bottom" secondItem="flF-ys-FmL" secondAttribute="bottom" id="jeJ-ag-rT0"/>
|
||||
<constraint firstItem="HJ8-fz-wWx" firstAttribute="leading" secondItem="qhY-xK-j4V" secondAttribute="leading" id="tTq-x2-K3e"/>
|
||||
<constraint firstItem="K90-F2-gDK" firstAttribute="leading" secondItem="qhY-xK-j4V" secondAttribute="leading" id="z1r-cR-lZo"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
|
||||
<connections>
|
||||
<outlet property="giftLabel" destination="HJ8-fz-wWx" id="pkM-L4-ZWQ"/>
|
||||
<outlet property="giftPriceLabel" destination="1Ye-0Q-Ars" id="0fu-nF-wy3"/>
|
||||
<outlet property="moneyLabel" destination="ykc-S1-6gP" id="1sU-VR-dQw"/>
|
||||
<outlet property="nameLabel" destination="qhY-xK-j4V" id="cTI-xo-aUG"/>
|
||||
<outlet property="timeLabel" destination="K90-F2-gDK" id="57k-vs-LDq"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="228.24427480916029" y="44.718309859154935"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="family_diamond" width="14" height="14"/>
|
||||
</resources>
|
||||
</document>
|
||||
22
QXLive/Mine(音域)/View/家族/QXFamilyTopCell.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// QXFamilyTopCell.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXFamilyModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXFamilyTopCell : UITableViewCell
|
||||
@property (weak, nonatomic) IBOutlet QXSeatHeaderView *headerView;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *IdLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *priceLabel;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *timesBtn;
|
||||
@property (strong, nonatomic) QXFamilyModel *model;
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
55
QXLive/Mine(音域)/View/家族/QXFamilyTopCell.m
Normal file
@@ -0,0 +1,55 @@
|
||||
//
|
||||
// QXFamilyTopCell.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/11/26.
|
||||
//
|
||||
|
||||
#import "QXFamilyTopCell.h"
|
||||
#import "QXFamilyPriceRecordViewController.h"
|
||||
|
||||
@implementation QXFamilyTopCell
|
||||
+(instancetype)cellWithTableView:(UITableView *)tableView{
|
||||
static NSString *cellId = @"QXFamilyTopCell";
|
||||
QXFamilyTopCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
|
||||
if (!cell) {
|
||||
cell = [[NSBundle mainBundle] loadNibNamed:cellId owner:nil options:nil].lastObject;
|
||||
cell.backgroundColor = [UIColor clearColor];
|
||||
cell.contentView.backgroundColor = [UIColor clearColor];
|
||||
cell.selectionStyle = UITableViewCellSelectionStyleNone;
|
||||
}
|
||||
return cell;
|
||||
}
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
}
|
||||
- (IBAction)familyGroupAction:(id)sender {
|
||||
if (self.model.group_members_lists.count == 0) {
|
||||
showToast(@"家族群至少需要签约一位徒弟");
|
||||
}else{
|
||||
[[QXGlobal shareGlobal] chatWithGroupId:self.model.group_id cover:self.model.group_owner_info.avatar name:[NSString stringWithFormat:@"%@的家族",self.model.group_owner_info.nickname] navagationController:self.viewController.navigationController];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)setModel:(QXFamilyModel *)model{
|
||||
_model = model;
|
||||
[self.headerView setHeadIcon:model.group_owner_info.avatar dress:model.group_owner_info.dress];
|
||||
[self.headerView.nobilityImageView sd_setImageWithURL:[NSURL URLWithString:model.group_owner_info.nobility_image]];
|
||||
self.nameLabel.text = model.group_owner_info.nickname;
|
||||
self.IdLabel.text = [NSString stringWithFormat:@"ID:%@",model.group_owner_info.user_code];
|
||||
self.priceLabel.text = model.group_earnings;
|
||||
[self.timesBtn setTitle:[NSString stringWithFormat:@"签约次数:%@",model.group_members_num] forState:(UIControlStateNormal)];
|
||||
}
|
||||
- (IBAction)moreAction:(id)sender {
|
||||
QXFamilyPriceRecordViewController *vc = [[QXFamilyPriceRecordViewController alloc] init];
|
||||
[self.viewController.navigationController pushViewController:vc animated:YES];
|
||||
}
|
||||
|
||||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
|
||||
[super setSelected:selected animated:animated];
|
||||
|
||||
// Configure the view for the selected state
|
||||
}
|
||||
|
||||
@end
|
||||
194
QXLive/Mine(音域)/View/家族/QXFamilyTopCell.xib
Normal file
@@ -0,0 +1,194 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<tableViewCell contentMode="scaleToFill" selectionStyle="default" indentationWidth="10" rowHeight="151" id="KGk-i7-Jjw" customClass="QXFamilyTopCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="450" height="166"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="KGk-i7-Jjw" id="H2p-sc-9uM">
|
||||
<rect key="frame" x="0.0" y="0.0" width="450" height="166"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3BO-xe-hek">
|
||||
<rect key="frame" x="16" y="6" width="418" height="154"/>
|
||||
<subviews>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="family_top_card_bg" translatesAutoresizingMaskIntoConstraints="NO" id="GHu-EJ-Wbd">
|
||||
<rect key="frame" x="0.0" y="0.0" width="418" height="154"/>
|
||||
</imageView>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="e13-1K-ekR" customClass="QXSeatHeaderView">
|
||||
<rect key="frame" x="12" y="12" width="52" height="68"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="52" id="ANo-cs-wER"/>
|
||||
<constraint firstAttribute="height" constant="68" id="XBq-sk-iDv"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="张三" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TkV-BL-yL5">
|
||||
<rect key="frame" x="70" y="18" width="32" height="20"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
|
||||
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ID:000" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="z3B-k1-NTB">
|
||||
<rect key="frame" x="70" y="48" width="41" height="16"/>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="0.65000000000000002" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="PyP-w3-ARC">
|
||||
<rect key="frame" x="347" y="34" width="59" height="24"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="59" id="YPA-f2-6hz"/>
|
||||
<constraint firstAttribute="height" constant="24" id="us6-M5-pLx"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="14"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="家族群">
|
||||
<color key="titleColor" red="0.22745098039215686" green="0.73725490196078436" blue="0.42745098039215684" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="12"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="familyGroupAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="kgd-1Q-MnU"/>
|
||||
</connections>
|
||||
</button>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="family_top_money_bg" translatesAutoresizingMaskIntoConstraints="NO" id="7nK-sc-Xb1">
|
||||
<rect key="frame" x="12" y="90" width="394" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="8p3-Y6-R2b"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="总计收益:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e4c-SV-262">
|
||||
<rect key="frame" x="20" y="97.333333333333329" width="71.666666666666671" height="19.333333333333329"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="0.15294117647058825" blue="0.15294117647058825" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="10" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3Oj-ZZ-dJY">
|
||||
<rect key="frame" x="115.66666666666666" y="97" width="19" height="20"/>
|
||||
<fontDescription key="fontDescription" type="boldSystem" pointSize="16"/>
|
||||
<color key="textColor" red="1" green="0.1529411765" blue="0.1529411765" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="wallet_diamond" translatesAutoresizingMaskIntoConstraints="NO" id="cTA-sK-hax">
|
||||
<rect key="frame" x="93.666666666666671" y="97" width="20" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="DQX-KA-pkE"/>
|
||||
<constraint firstAttribute="width" constant="20" id="NPS-q0-41H"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="p1I-Q6-afr">
|
||||
<rect key="frame" x="12" y="118" width="95" height="24"/>
|
||||
<color key="backgroundColor" red="0.73333333333333328" green="0.63529411764705879" blue="0.99607843137254903" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="95" id="9QQ-oj-Ef7"/>
|
||||
<constraint firstAttribute="height" constant="24" id="fqd-hY-yNf"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="签约次数:2"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="12"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0gn-8b-lI6">
|
||||
<rect key="frame" x="303" y="90" width="95" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="95" id="s59-iI-L71"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="13"/>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title="查看更多">
|
||||
<color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.48999999999999999" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="12"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
<connections>
|
||||
<action selector="moreAction:" destination="KGk-i7-Jjw" eventType="touchUpInside" id="VfQ-Au-zQr"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="GHu-EJ-Wbd" secondAttribute="trailing" id="0jE-EF-hX0"/>
|
||||
<constraint firstItem="TkV-BL-yL5" firstAttribute="top" secondItem="e13-1K-ekR" secondAttribute="top" constant="6" id="75K-gp-Cgc"/>
|
||||
<constraint firstAttribute="bottom" secondItem="p1I-Q6-afr" secondAttribute="bottom" constant="12" id="8lM-bl-kBQ"/>
|
||||
<constraint firstAttribute="trailing" secondItem="7nK-sc-Xb1" secondAttribute="trailing" constant="12" id="9sa-qm-BwO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="PyP-w3-ARC" secondAttribute="trailing" constant="12" id="ArF-ga-7Pc"/>
|
||||
<constraint firstItem="e4c-SV-262" firstAttribute="centerY" secondItem="7nK-sc-Xb1" secondAttribute="centerY" id="Fet-Ld-aPl"/>
|
||||
<constraint firstItem="0gn-8b-lI6" firstAttribute="top" secondItem="7nK-sc-Xb1" secondAttribute="top" id="JhD-54-GuB"/>
|
||||
<constraint firstItem="e13-1K-ekR" firstAttribute="top" secondItem="3BO-xe-hek" secondAttribute="top" constant="12" id="K3Q-PA-aBG"/>
|
||||
<constraint firstItem="GHu-EJ-Wbd" firstAttribute="top" secondItem="3BO-xe-hek" secondAttribute="top" id="NnM-R4-vuZ"/>
|
||||
<constraint firstItem="PyP-w3-ARC" firstAttribute="centerY" secondItem="e13-1K-ekR" secondAttribute="centerY" id="PaC-cQ-ZGg"/>
|
||||
<constraint firstItem="e13-1K-ekR" firstAttribute="leading" secondItem="3BO-xe-hek" secondAttribute="leading" constant="12" id="SL7-K7-CzP"/>
|
||||
<constraint firstItem="7nK-sc-Xb1" firstAttribute="top" secondItem="e13-1K-ekR" secondAttribute="bottom" constant="10" id="The-Fm-7EX"/>
|
||||
<constraint firstItem="z3B-k1-NTB" firstAttribute="leading" secondItem="TkV-BL-yL5" secondAttribute="leading" id="TmM-oO-jaK"/>
|
||||
<constraint firstAttribute="trailing" secondItem="0gn-8b-lI6" secondAttribute="trailing" constant="20" id="U3O-kJ-MpN"/>
|
||||
<constraint firstItem="TkV-BL-yL5" firstAttribute="leading" secondItem="e13-1K-ekR" secondAttribute="trailing" constant="6" id="VM4-zX-a10"/>
|
||||
<constraint firstItem="cTA-sK-hax" firstAttribute="leading" secondItem="e4c-SV-262" secondAttribute="trailing" constant="2" id="ZQc-Hs-BIy"/>
|
||||
<constraint firstItem="cTA-sK-hax" firstAttribute="centerY" secondItem="7nK-sc-Xb1" secondAttribute="centerY" id="cPp-hD-TGb"/>
|
||||
<constraint firstItem="7nK-sc-Xb1" firstAttribute="leading" secondItem="3BO-xe-hek" secondAttribute="leading" constant="12" id="cbo-tO-HwG"/>
|
||||
<constraint firstItem="3Oj-ZZ-dJY" firstAttribute="centerY" secondItem="7nK-sc-Xb1" secondAttribute="centerY" id="iaD-sN-p3Y"/>
|
||||
<constraint firstItem="e4c-SV-262" firstAttribute="leading" secondItem="7nK-sc-Xb1" secondAttribute="leading" constant="8" id="j67-lX-4D3"/>
|
||||
<constraint firstItem="p1I-Q6-afr" firstAttribute="leading" secondItem="e13-1K-ekR" secondAttribute="leading" id="jgY-0h-fIK"/>
|
||||
<constraint firstItem="3Oj-ZZ-dJY" firstAttribute="leading" secondItem="cTA-sK-hax" secondAttribute="trailing" constant="2" id="lNr-Lh-ws1"/>
|
||||
<constraint firstItem="0gn-8b-lI6" firstAttribute="bottom" secondItem="7nK-sc-Xb1" secondAttribute="bottom" id="sfq-af-C6B"/>
|
||||
<constraint firstAttribute="bottom" secondItem="GHu-EJ-Wbd" secondAttribute="bottom" id="srm-KP-Woe"/>
|
||||
<constraint firstItem="GHu-EJ-Wbd" firstAttribute="leading" secondItem="3BO-xe-hek" secondAttribute="leading" id="tYV-M9-uBA"/>
|
||||
<constraint firstItem="z3B-k1-NTB" firstAttribute="top" secondItem="TkV-BL-yL5" secondAttribute="bottom" constant="10" id="w2f-jH-NvI"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="12"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstItem="3BO-xe-hek" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="4fs-bY-gK5"/>
|
||||
<constraint firstAttribute="trailing" secondItem="3BO-xe-hek" secondAttribute="trailing" constant="16" id="iQP-Gx-B1k"/>
|
||||
<constraint firstItem="3BO-xe-hek" firstAttribute="top" secondItem="H2p-sc-9uM" secondAttribute="top" constant="6" id="o1N-M7-JGZ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="3BO-xe-hek" secondAttribute="bottom" constant="6" id="whe-CV-i6e"/>
|
||||
</constraints>
|
||||
</tableViewCellContentView>
|
||||
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
|
||||
<connections>
|
||||
<outlet property="IdLabel" destination="z3B-k1-NTB" id="boA-R9-9hQ"/>
|
||||
<outlet property="headerView" destination="e13-1K-ekR" id="Oho-Pf-Go7"/>
|
||||
<outlet property="nameLabel" destination="TkV-BL-yL5" id="4va-BZ-DuQ"/>
|
||||
<outlet property="priceLabel" destination="3Oj-ZZ-dJY" id="7EC-Hv-Xv0"/>
|
||||
<outlet property="timesBtn" destination="p1I-Q6-afr" id="N9W-RK-ulb"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="238.1679389312977" y="57.04225352112676"/>
|
||||
</tableViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="family_top_card_bg" width="343" height="154"/>
|
||||
<image name="family_top_money_bg" width="319" height="34"/>
|
||||
<image name="wallet_diamond" width="28" height="28"/>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
@@ -21,7 +21,12 @@
|
||||
-(void)setModel:(QXDayTaskListModel *)model{
|
||||
_model = model;
|
||||
self.titleLabel.text = model.task_name;
|
||||
NSString*subTitle = [NSString stringWithFormat:@"金币+%@",model.gold_reward];
|
||||
NSString*subTitle = @"";
|
||||
if (model.reward_type.intValue == 1) {
|
||||
subTitle = [NSString stringWithFormat:@"金币+%@",model.gold_reward];
|
||||
}else{
|
||||
subTitle = [NSString stringWithFormat:@"钻石+%@",model.gold_reward];
|
||||
}
|
||||
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:subTitle];
|
||||
[attr yy_setColor:RGB16(0xFF8827) range:[subTitle rangeOfString:[NSString stringWithFormat:@"+%@",model.gold_reward]]];
|
||||
self.subTitleLabel.attributedText = attr;
|
||||
|
||||
22
QXLive/Other/Assets.xcassets/mine/body_price_rule_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "body_price_rule_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "body_price_rule_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/mine/body_price_rule_bg.imageset/body_price_rule_bg@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 611 KiB |
BIN
QXLive/Other/Assets.xcassets/mine/body_price_rule_bg.imageset/body_price_rule_bg@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 1.4 MiB |
22
QXLive/Other/Assets.xcassets/mine/亲密关系/heart_beat_space_dress_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "heart_beat_space_dress_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "heart_beat_space_dress_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 252 KiB |
22
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_exp_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_exp_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_exp_bg@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_exp_bg.imageset/user_heart_beat_exp_bg@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 137 KiB |
BIN
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_exp_bg.imageset/user_heart_beat_exp_bg@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 300 KiB |
22
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_fly.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_fly@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_fly@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_fly.imageset/user_heart_beat_fly@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 455 KiB |
BIN
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_fly.imageset/user_heart_beat_fly@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 983 KiB |
22
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_heart_icon.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_heart_icon@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_heart_icon@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
21
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_space_bg.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_space_bg@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 827 KiB |
22
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_title.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_title@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "user_heart_beat_title@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||
BIN
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_title.imageset/user_heart_beat_title@2x.png
vendored
Normal file
|
After Width: | Height: | Size: 263 KiB |
BIN
QXLive/Other/Assets.xcassets/mine/亲密关系/user_heart_beat_title.imageset/user_heart_beat_title@3x.png
vendored
Normal file
|
After Width: | Height: | Size: 551 KiB |
6
QXLive/Other/Assets.xcassets/mine/家族/Contents.json
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
||||