首次提交

This commit is contained in:
启星
2025-08-08 11:05:33 +08:00
parent 1b3bb91b4a
commit adc1a2a25d
8803 changed files with 708874 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
//
// LMCPInRoomVapView.h
// SweetParty
//
// Created by Xmac on 2024/8/17.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface LMCPInRoomVapView : UIView
- (void)playVapWithDict:(NSDictionary *)dict;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,147 @@
//
// LMCPInRoomVapView.m
// SweetParty
//
// Created by Xmac on 2024/8/17.
//
#import "LMCPInRoomVapView.h"
#import "QGVAPWrapView.h"
#import "UIView+VAP.h"
#import "QGVAPWrapView+download.h"
@interface LMCPInRoomVapView ()<HWDMP4PlayDelegate,VAPWrapViewDelegate>
@property (weak, nonatomic) IBOutlet UIView *inRoomTXCover;
@property (weak, nonatomic) IBOutlet UIView *leftHeaderVapCover;
@property (weak, nonatomic) IBOutlet UIView *rightHeaderVapCover;
@property (weak, nonatomic) IBOutlet UIImageView *leftHeaderPic;
@property (weak, nonatomic) IBOutlet UIImageView *rightHeaderPic;
@property (weak, nonatomic) IBOutlet UILabel *leftNicknameLabel;
@property (weak, nonatomic) IBOutlet UILabel *rightNicknameLabel;
@property (nonatomic, strong) QGVAPWrapView *leftHeaderVapView;
@property (nonatomic, strong) QGVAPWrapView *rightHeaderVapView;
@property (nonatomic, strong) QGVAPWrapView *texiaoVapView;
@end
@implementation LMCPInRoomVapView
- (void)awakeFromNib
{
[super awakeFromNib];
[self.leftHeaderVapCover addSubview:self.leftHeaderVapView];
[self.leftHeaderVapView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.leftHeaderVapCover);
}];
[self.rightHeaderVapCover addSubview:self.rightHeaderVapView];
[self.rightHeaderVapView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.rightHeaderVapCover);
}];
[self.inRoomTXCover addSubview:self.texiaoVapView];
[self.texiaoVapView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(0);
make.top.mas_equalTo(0);
make.width.mas_equalTo(APPW);
make.height.mas_equalTo(APPH);
}];
}
- (void)playVapWithDict:(NSDictionary *)dict
{
NSString *send_nick_name = [dict safeStringForKey:@"send_nick_name"];
NSString *send_head_pic = [dict safeStringForKey:@"send_head_pic"];
NSString *receive_nick_name = [dict safeStringForKey:@"receive_nick_name"];
NSString *receive_head_pic = [dict safeStringForKey:@"receive_head_pic"];
NSString *texiao_img = [dict safeStringForKey:@"texiao_img"];
NSString *avatar_play_image = [dict safeStringForKey:@"avatar_play_image"];
NSString *receive_avatar_play_image = [dict safeStringForKey:@"receive_avatar_play_image"];
if (avatar_play_image.length>0){
[self.leftHeaderVapView playMemoryWithStr:C_string(avatar_play_image) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.leftHeaderVapView playHWDMP4:fileStr repeatCount:-1 delegate:nil];
} Failure:^(NSError * _Nonnull error) {
[self.leftHeaderVapView removeFromSuperview];
}];
}
if (receive_avatar_play_image.length>0){
[self.rightHeaderVapView playMemoryWithStr:C_string(receive_avatar_play_image) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.rightHeaderVapView playHWDMP4:fileStr repeatCount:-1 delegate:nil];
} Failure:^(NSError * _Nonnull error) {
[self.rightHeaderVapView removeFromSuperview];
}];
}
if (texiao_img.length>0){
[self.texiaoVapView playMemoryWithStr:C_string(texiao_img) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.texiaoVapView playHWDMP4:fileStr repeatCount:0 delegate:self];
} Failure:^(NSError * _Nonnull error) {
[self.texiaoVapView removeFromSuperview];
}];
}
[self.leftHeaderPic sd_setImageWithURL:[NSURL URLWithString:send_head_pic] placeholderImage:kDefaultUserIcon];
[self.rightHeaderPic sd_setImageWithURL:[NSURL URLWithString:receive_head_pic] placeholderImage:kDefaultUserIcon];
self.leftNicknameLabel.text = send_nick_name;
self.rightNicknameLabel.text = receive_nick_name;
}
- (QGVAPWrapView *)leftHeaderVapView {
if (!_leftHeaderVapView) {
_leftHeaderVapView = [[QGVAPWrapView alloc] initWithFrame:CGRectZero];
_leftHeaderVapView.hwd_Delegate = self;
_leftHeaderVapView.contentMode = QGVAPWrapViewContentModeScaleToFill;
_leftHeaderVapView.userInteractionEnabled = NO;
}
return _leftHeaderVapView;
}
- (QGVAPWrapView *)rightHeaderVapView {
if (!_rightHeaderVapView) {
_rightHeaderVapView = [[QGVAPWrapView alloc] initWithFrame:CGRectZero];
_rightHeaderVapView.hwd_Delegate = self;
_rightHeaderVapView.contentMode = QGVAPWrapViewContentModeScaleToFill;
_rightHeaderVapView.userInteractionEnabled = NO;
}
return _rightHeaderVapView;
}
- (QGVAPWrapView *)texiaoVapView {
if (!_texiaoVapView) {
_texiaoVapView = [[QGVAPWrapView alloc] initWithFrame:CGRectZero];
_texiaoVapView.hwd_Delegate = self;
_texiaoVapView.contentMode = QGVAPWrapViewContentModeScaleToFill;
_texiaoVapView.userInteractionEnabled = NO;
}
return _texiaoVapView;
}
- (void)vapWrap_viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container
{
RCMicMainThread(^{
self.hidden = YES;
[self.leftHeaderVapView stopHWDMP4];
[self.rightHeaderVapView stopHWDMP4];
})
}
@end

View File

@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" 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="21679"/>
<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"/>
<view userInteractionEnabled="NO" contentMode="scaleToFill" id="iN0-l3-epB" customClass="LMCPInRoomVapView">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Vbv-lO-DaV">
<rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<view userInteractionEnabled="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="edZ-H6-JHw">
<rect key="frame" x="96.666666666666686" y="536.33333333333337" width="200" height="120"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default_userIcon" translatesAutoresizingMaskIntoConstraints="NO" id="hAa-5x-Dy5">
<rect key="frame" x="20" y="20" width="50" height="50"/>
<constraints>
<constraint firstAttribute="height" constant="50" id="E7k-03-41o"/>
<constraint firstAttribute="width" constant="50" id="wWZ-Ke-bj3"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default_userIcon" translatesAutoresizingMaskIntoConstraints="NO" id="gZ1-2p-scn">
<rect key="frame" x="130" y="20" width="50" height="50"/>
<constraints>
<constraint firstAttribute="width" constant="50" id="Lsr-6o-Fn8"/>
<constraint firstAttribute="height" constant="50" id="jDo-JX-gFo"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="25"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8wW-wP-nRE">
<rect key="frame" x="10" y="10" width="70" height="70"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="width" constant="70" id="VPR-Ln-qZb"/>
<constraint firstAttribute="height" constant="70" id="kCS-2a-ds0"/>
</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="rKm-0E-Tig">
<rect key="frame" x="31.666666666666671" y="85" width="26.666666666666671" height="15.666666666666671"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<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="Gev-q6-ARG">
<rect key="frame" x="141.66666666666669" y="85" width="26.666666666666657" height="15.666666666666671"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="13"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gaQ-5h-dua">
<rect key="frame" x="120" y="10" width="70" height="70"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="70" id="aW8-Mh-ruo"/>
<constraint firstAttribute="width" constant="70" id="rZ7-I6-JKM"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="8wW-wP-nRE" firstAttribute="centerX" secondItem="hAa-5x-Dy5" secondAttribute="centerX" id="1Zz-6B-85S"/>
<constraint firstAttribute="trailing" secondItem="gZ1-2p-scn" secondAttribute="trailing" constant="20" id="4nU-dP-uXb"/>
<constraint firstItem="rKm-0E-Tig" firstAttribute="top" secondItem="8wW-wP-nRE" secondAttribute="bottom" constant="5" id="Fjn-P9-rhY"/>
<constraint firstItem="8wW-wP-nRE" firstAttribute="centerY" secondItem="hAa-5x-Dy5" secondAttribute="centerY" id="GFW-Lg-PzS"/>
<constraint firstAttribute="width" constant="200" id="Je5-6X-H1s"/>
<constraint firstItem="gZ1-2p-scn" firstAttribute="top" secondItem="edZ-H6-JHw" secondAttribute="top" constant="20" id="T8s-yp-hIR"/>
<constraint firstItem="gaQ-5h-dua" firstAttribute="centerX" secondItem="gZ1-2p-scn" secondAttribute="centerX" id="TcU-nA-XUc"/>
<constraint firstItem="hAa-5x-Dy5" firstAttribute="leading" secondItem="edZ-H6-JHw" secondAttribute="leading" constant="20" id="cnV-YJ-sqj"/>
<constraint firstItem="Gev-q6-ARG" firstAttribute="centerX" secondItem="gaQ-5h-dua" secondAttribute="centerX" id="d4f-up-UIO"/>
<constraint firstItem="rKm-0E-Tig" firstAttribute="centerX" secondItem="8wW-wP-nRE" secondAttribute="centerX" id="gPJ-vs-0Rw"/>
<constraint firstItem="hAa-5x-Dy5" firstAttribute="top" secondItem="edZ-H6-JHw" secondAttribute="top" constant="20" id="gyw-u3-ocG"/>
<constraint firstItem="gaQ-5h-dua" firstAttribute="centerY" secondItem="gZ1-2p-scn" secondAttribute="centerY" id="irb-YC-otu"/>
<constraint firstAttribute="height" constant="120" id="mCw-rd-Nv6"/>
<constraint firstItem="Gev-q6-ARG" firstAttribute="top" secondItem="gaQ-5h-dua" secondAttribute="bottom" constant="5" id="rnH-vN-uaS"/>
</constraints>
</view>
</subviews>
<viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstItem="edZ-H6-JHw" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" multiplier="1.4" id="Svx-ob-u7O"/>
<constraint firstAttribute="bottom" secondItem="Vbv-lO-DaV" secondAttribute="bottom" id="amc-rq-iI7"/>
<constraint firstItem="Vbv-lO-DaV" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="f77-mD-aGl"/>
<constraint firstItem="Vbv-lO-DaV" firstAttribute="leading" secondItem="vUN-kp-3ea" secondAttribute="leading" id="niT-AW-BDZ"/>
<constraint firstItem="Vbv-lO-DaV" firstAttribute="trailing" secondItem="vUN-kp-3ea" secondAttribute="trailing" id="oO3-1Q-XFh"/>
<constraint firstItem="edZ-H6-JHw" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="qHk-Ad-X2E"/>
</constraints>
<connections>
<outlet property="inRoomTXCover" destination="Vbv-lO-DaV" id="x6s-Hr-NR8"/>
<outlet property="leftHeaderPic" destination="hAa-5x-Dy5" id="BTa-dh-cof"/>
<outlet property="leftHeaderVapCover" destination="8wW-wP-nRE" id="3op-sA-4pX"/>
<outlet property="leftNicknameLabel" destination="rKm-0E-Tig" id="nY0-z0-odV"/>
<outlet property="rightHeaderPic" destination="gZ1-2p-scn" id="bR8-E4-tf3"/>
<outlet property="rightHeaderVapCover" destination="gaQ-5h-dua" id="Hpa-qK-Xsm"/>
<outlet property="rightNicknameLabel" destination="Gev-q6-ARG" id="NAF-Uv-enH"/>
</connections>
<point key="canvasLocation" x="130.53435114503816" y="-11.267605633802818"/>
</view>
</objects>
<resources>
<image name="default_userIcon" width="90" height="90"/>
</resources>
</document>

View File

@@ -0,0 +1,29 @@
//
// LMCPSpaceCollectionViewCell.h
// SweetParty
//
// Created by Xmac on 2024/8/13.
//
#import <UIKit/UIKit.h>
#import "LMCPSpaceDressListModel.h"
NS_ASSUME_NONNULL_BEGIN
static NSString *LMCPSpaceCollectionViewCellID = @"LMCPSpaceCollectionViewCellID";
@interface LMCPSpaceCollectionViewCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *levelLabel;
@property (weak, nonatomic) IBOutlet UIImageView *dressIcon;
@property (weak, nonatomic) IBOutlet UIImageView *basePic;
@property (weak, nonatomic) IBOutlet UILabel *dressName;
@property (nonatomic, strong) LMCPSpaceDressListModel *model;
- (void)setHeaderDecInfoWithModel:(LMCPSpaceDressListModel *)model;
- (void)setCPTexiaoInfoWithModel:(LMCPSpaceDressListModel *)model;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,54 @@
//
// LMCPSpaceCollectionViewCell.m
// SweetParty
//
// Created by Xmac on 2024/8/13.
//
#import "LMCPSpaceCollectionViewCell.h"
@implementation LMCPSpaceCollectionViewCell
- (void)awakeFromNib {
[super awakeFromNib];
// Initialization code
self.levelLabel.backgroundColor = [UIColor bm_colorGradientChangeWithSize:CGSizeMake(32, 16) direction:(FXGradientChangeDirectionHorizontal) startColor:mainLightColor endColor:mainDeepColor];
}
- (void)setHeaderDecInfoWithModel:(LMCPSpaceDressListModel *)model
{
[self.basePic sd_setImageWithURL:[NSURL URLWithString:model.head_decorate_img] placeholderImage:kDefaultUserIcon];
self.dressName.text = model.head_decorate_title;
if ([model.is_using isEqualToString:@"1"]){
self.dressIcon.hidden = NO;
}else{
self.dressIcon.hidden = YES;
}
self.levelLabel.text = [NSString stringWithFormat:@"Lv%@",model.level];
if ([model.js_suo isEqualToString:@"2"]){
self.contentView.alpha = 0.6;
}else{
self.contentView.alpha = 1;
}
}
- (void)setCPTexiaoInfoWithModel:(LMCPSpaceDressListModel *)model
{
[self.basePic sd_setImageWithURL:[NSURL URLWithString:model.cp_tx_img] placeholderImage:kDefaultUserIcon];
self.dressName.text = model.cp_tx_title;
if ([model.is_using isEqualToString:@"1"]){
self.dressIcon.hidden = NO;
}else{
self.dressIcon.hidden = YES;
}
self.levelLabel.text = [NSString stringWithFormat:@"Lv%@",model.level];
if ([model.js_suo isEqualToString:@"2"]){
self.contentView.alpha = 0.6;
}else{
self.contentView.alpha = 1;
}
}
@end

View File

@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21701" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21679"/>
<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"/>
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="LMCPSpaceCollectionViewCell">
<rect key="frame" x="0.0" y="0.0" width="95" height="126"/>
<autoresizingMask key="autoresizingMask"/>
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
<rect key="frame" x="0.0" y="0.0" width="95" height="126"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="cp_kongjian_item_sel" translatesAutoresizingMaskIntoConstraints="NO" id="Cfc-K8-jxe">
<rect key="frame" x="0.0" y="0.0" width="95" height="126"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="cp_kongjian_level" translatesAutoresizingMaskIntoConstraints="NO" id="2BV-aZ-nJL">
<rect key="frame" x="0.0" y="0.0" width="36" height="22"/>
<constraints>
<constraint firstAttribute="height" constant="22" id="LvF-DJ-4sG"/>
<constraint firstAttribute="width" constant="36" id="hrp-k3-zra"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LV1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PeZ-TY-yuL">
<rect key="frame" x="9.3333333333333339" y="5" width="17.333333333333329" height="12"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="10"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="8"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="cp_kongjian_yipeidai" translatesAutoresizingMaskIntoConstraints="NO" id="8wS-aM-Vxj">
<rect key="frame" x="25.666666666666671" y="98" width="44" height="18"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default_userIcon" translatesAutoresizingMaskIntoConstraints="NO" id="p1m-d3-TuH">
<rect key="frame" x="20" y="20" width="55" height="55"/>
<constraints>
<constraint firstAttribute="width" constant="55" id="Mwb-l5-lPI"/>
<constraint firstAttribute="height" constant="55" id="uTI-OZ-jqj"/>
</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="hLv-gz-U8i">
<rect key="frame" x="35.333333333333336" y="81" width="24.666666666666664" height="14.333333333333329"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
</view>
<constraints>
<constraint firstItem="p1m-d3-TuH" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" constant="20" id="1RZ-2x-HpK"/>
<constraint firstAttribute="bottom" secondItem="8wS-aM-Vxj" secondAttribute="bottom" constant="10" id="3T6-3U-UqR"/>
<constraint firstItem="hLv-gz-U8i" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="3fd-QW-fAY"/>
<constraint firstItem="8wS-aM-Vxj" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="4hd-Gq-lpm"/>
<constraint firstItem="Cfc-K8-jxe" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="8ci-BN-gJB"/>
<constraint firstItem="2BV-aZ-nJL" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="COf-Rt-dDi"/>
<constraint firstItem="PeZ-TY-yuL" firstAttribute="centerX" secondItem="2BV-aZ-nJL" secondAttribute="centerX" id="CW8-Np-4to"/>
<constraint firstAttribute="trailing" secondItem="Cfc-K8-jxe" secondAttribute="trailing" id="JYq-7S-egm"/>
<constraint firstItem="hLv-gz-U8i" firstAttribute="top" secondItem="p1m-d3-TuH" secondAttribute="bottom" constant="6" id="L5l-0Q-yoK"/>
<constraint firstItem="2BV-aZ-nJL" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="RS2-eX-1W3"/>
<constraint firstAttribute="bottom" secondItem="Cfc-K8-jxe" secondAttribute="bottom" id="XXG-F8-GXS"/>
<constraint firstItem="p1m-d3-TuH" firstAttribute="centerX" secondItem="gTV-IL-0wX" secondAttribute="centerX" id="Y2y-o8-58v"/>
<constraint firstItem="Cfc-K8-jxe" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="ceD-i0-Cb7"/>
<constraint firstItem="PeZ-TY-yuL" firstAttribute="centerY" secondItem="2BV-aZ-nJL" secondAttribute="centerY" id="rv5-E3-hoV"/>
</constraints>
<size key="customSize" width="107" height="116"/>
<connections>
<outlet property="basePic" destination="p1m-d3-TuH" id="Vqs-tq-8PF"/>
<outlet property="dressIcon" destination="8wS-aM-Vxj" id="78s-7E-mpj"/>
<outlet property="dressName" destination="hLv-gz-U8i" id="pwC-0E-Owd"/>
<outlet property="levelLabel" destination="PeZ-TY-yuL" id="lwT-CW-sPx"/>
</connections>
<point key="canvasLocation" x="-22" y="59"/>
</collectionViewCell>
</objects>
<resources>
<image name="cp_kongjian_item_sel" width="95" height="126"/>
<image name="cp_kongjian_level" width="36" height="22"/>
<image name="cp_kongjian_yipeidai" width="44" height="18"/>
<image name="default_userIcon" width="512" height="512"/>
</resources>
</document>

View File

@@ -0,0 +1,29 @@
//
// LMCPSpaceDressListModel.h
// SweetParty
//
// Created by Xmac on 2024/8/16.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface LMCPSpaceDressListModel : NSObject
@property (nonatomic, strong) NSString *cp_tx_play_img;
@property (nonatomic, strong) NSString *js_suo;
@property (nonatomic, strong) NSString *is_using;
@property (nonatomic, strong) NSString *head_decorate_img;
@property (nonatomic, strong) NSString *head_decorate_title;
@property (nonatomic, strong) NSString *head_decorate_play_img;
@property (nonatomic, strong) NSString *level;
@property (nonatomic, strong) NSString *head_decorate_id;
@property (nonatomic, strong) NSString *cp_tx_id;
@property (nonatomic, strong) NSString *cp_tx_img;
@property (nonatomic, strong) NSString *cp_tx_title;
@property (nonatomic, strong) NSString *udid;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// LMCPSpaceDressListModel.m
// SweetParty
//
// Created by Xmac on 2024/8/16.
//
#import "LMCPSpaceDressListModel.h"
@implementation LMCPSpaceDressListModel
@end

View File

@@ -0,0 +1,29 @@
//
// LMCPSpaceInfoModel.h
// SweetParty
//
// Created by Xmac on 2024/8/16.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface LMCPSpaceInfoModel : NSObject
@property (nonatomic, strong) NSString *uid;
@property (nonatomic, strong) NSString *receive_uid;
@property (nonatomic, strong) NSString *cp_level;
@property (nonatomic, assign) CGFloat cp_value;
@property (nonatomic, strong) NSString *u_nick_name;
@property (nonatomic, strong) NSString *u_head_pic;
@property (nonatomic, strong) NSString *receive_nick_name;
@property (nonatomic, strong) NSString *receive_head_pic;
@property (nonatomic, assign) CGFloat next_cp_value;
@property (nonatomic, strong) NSString *receive_avatar_play_image;
@property (nonatomic, strong) NSString *u_avatar_play_image;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// LMCPSpaceInfoModel.m
// SweetParty
//
// Created by Xmac on 2024/8/16.
//
#import "LMCPSpaceInfoModel.h"
@implementation LMCPSpaceInfoModel
@end

View File

@@ -0,0 +1,16 @@
//
// LMCPSpaceViewController.h
// SweetParty
//
// Created by Xmac on 2024/8/13.
//
#import "BaseController.h"
NS_ASSUME_NONNULL_BEGIN
@interface LMCPSpaceViewController : BaseController
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,293 @@
//
// LMCPSpaceViewController.m
// SweetParty
//
// Created by Xmac on 2024/8/13.
//
#import "LMCPSpaceViewController.h"
#import "LMCPSpaceCollectionViewCell.h"
#import "LMCPSpaceInfoModel.h"
#import "QGVAPWrapView.h"
#import "UIView+VAP.h"
#import "QGVAPWrapView+download.h"
@interface LMCPSpaceViewController ()<JXCategoryViewDelegate,UICollectionViewDelegate,UICollectionViewDataSource,HWDMP4PlayDelegate,VAPWrapViewDelegate>
@property (weak, nonatomic) IBOutlet UIView *cateCoverView;
@property (weak, nonatomic) IBOutlet UILabel *topLevelLabel;
@property (weak, nonatomic) IBOutlet UIImageView *leftHeaderPic;
@property (weak, nonatomic) IBOutlet UIImageView *rightHeaderPic;
@property (weak, nonatomic) IBOutlet UILabel *valueLabel;
@property (weak, nonatomic) IBOutlet UILabel *leftNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *rightNameLabel;
@property (nonatomic, strong) JXCategoryTitleView *categoryView;
@property (weak, nonatomic) IBOutlet UICollectionView *dressItemView;
@property (nonatomic, strong) LMCPSpaceInfoModel *infoModel;
@property (nonatomic, assign) NSInteger type;
@property (nonatomic, strong) NSMutableArray *dataArr;
@property (nonatomic, strong) QGVAPWrapView *leftHeaderVapView;
@property (nonatomic, strong) QGVAPWrapView *rightHeaderVapView;
@property (nonatomic, strong) QGVAPWrapView *texiaoVapView;
@property (weak, nonatomic) IBOutlet UIView *rightVapCover;
@property (weak, nonatomic) IBOutlet UIView *leftVapCover;
@end
@implementation LMCPSpaceViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.navTitle = @"情侣空间";
[self.customNavBar styleClear];
self.type = 1;
[self setupUI];
[self requestLoadMyCPInfo];
[self requestLoadCPDressList];
}
- (void)setupUI
{
[self.cateCoverView addSubview:self.categoryView];
[self.categoryView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.cateCoverView);
}];
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.itemSize = CGSizeMake((APPW-15*6)/3, 126);
flowLayout.minimumLineSpacing = 15;
flowLayout.minimumInteritemSpacing = 15;
flowLayout.sectionInset = UIEdgeInsetsMake(0, 15, 15, 15);
self.dressItemView.collectionViewLayout = flowLayout;
self.dressItemView.delegate = self;
self.dressItemView.dataSource = self;
[self.dressItemView registerNib:[UINib nibWithNibName:@"LMCPSpaceCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:LMCPSpaceCollectionViewCellID];
[self.leftVapCover addSubview:self.leftHeaderVapView];
[self.leftHeaderVapView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.leftVapCover);
}];
[self.rightVapCover addSubview:self.rightHeaderVapView];
[self.rightHeaderVapView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.rightVapCover);
}];
[self.view addSubview:self.texiaoVapView];
[self.texiaoVapView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
}
- (void)setupInfoWithModel
{
[self.leftHeaderPic sd_setImageWithURL:[NSURL URLWithString:self.infoModel.u_head_pic] placeholderImage:kDefaultUserIcon];
[self.rightHeaderPic sd_setImageWithURL:[NSURL URLWithString:self.infoModel.receive_head_pic] placeholderImage:kDefaultUserIcon];
self.leftNameLabel.text = self.infoModel.u_nick_name;
self.rightNameLabel.text = self.infoModel.receive_nick_name;
self.topLevelLabel.text = [NSString stringWithFormat:@"LV.%@",self.infoModel.cp_level];
self.valueLabel.text = [NSString stringWithFormat:@"%.0f/%.0f",self.infoModel.cp_value,self.infoModel.next_cp_value];
WEAK_SELF;
if (self.infoModel.u_avatar_play_image.length>0){
[self.leftHeaderVapView playMemoryWithStr:C_string(self.infoModel.u_avatar_play_image) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.leftHeaderVapView playHWDMP4:fileStr repeatCount:-1 delegate:self];
} Failure:^(NSError * _Nonnull error) {
[weakSelf.leftHeaderVapView removeFromSuperview];
}];
}
if (self.infoModel.receive_avatar_play_image.length>0){
[self.rightHeaderVapView playMemoryWithStr:C_string(self.infoModel.receive_avatar_play_image) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.rightHeaderVapView playHWDMP4:fileStr repeatCount:-1 delegate:self];
} Failure:^(NSError * _Nonnull error) {
[weakSelf.rightHeaderVapView removeFromSuperview];
}];
}
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return self.dataArr.count;
}
- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
LMCPSpaceCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:LMCPSpaceCollectionViewCellID forIndexPath:indexPath];
LMCPSpaceDressListModel *model = self.dataArr[indexPath.item];
if (self.type == 1){
[cell setHeaderDecInfoWithModel:model];
}else{
[cell setCPTexiaoInfoWithModel:model];
}
return cell;
}
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
LMCPSpaceDressListModel *model = self.dataArr[indexPath.item];
if ([model.js_suo isEqualToString:@"1"]){
NSDictionary *params = @{@"udid":model.udid};
NSString *urlStr = @"/api/decorate/user_use_decorate";
[[AFNetworkRequset shared] postRequestWithParams:params Path:urlStr Loading:YES Hud:YES Success:^(id _Nonnull responseDic) {
[self requestLoadCPDressList];
if (self.type == 1){
if ([self.infoModel.uid isEqualToString:[BJUserManager userInfo].uid]){
[self.leftHeaderVapView playMemoryWithStr:C_string(model.head_decorate_play_img) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.leftHeaderVapView playHWDMP4:fileStr repeatCount:-1 delegate:self];
} Failure:^(NSError * _Nonnull error) {
[self.leftHeaderVapView removeFromSuperview];
}];
}else{
[self.rightHeaderVapView playMemoryWithStr:C_string(model.head_decorate_play_img) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.rightHeaderVapView playHWDMP4:fileStr repeatCount:-1 delegate:self];
} Failure:^(NSError * _Nonnull error) {
[self.rightHeaderVapView removeFromSuperview];
}];
}
}else{
self.texiaoVapView.hidden = NO;
[self.texiaoVapView playMemoryWithStr:C_string(model.cp_tx_play_img) Success:^(NSURL * _Nonnull filePath) {
NSString *fileStr = [filePath absoluteString];
if ([fileStr containsString:@"file://"]) {
fileStr = [fileStr substringFromIndex:7];
}
[self.texiaoVapView playHWDMP4:fileStr repeatCount:0 delegate:self];
} Failure:^(NSError * _Nonnull error) {
[self.texiaoVapView removeFromSuperview];
}];
}
} Failure:^(id _Nonnull errorData) {
}];
}else{
[HelpPageDefine showMessage:@"未解锁"];
}
}
- (void)requestLoadMyCPInfo
{
[BJHttpTool BJ_GetMy_cpWithParameters:@{} success:^(id response) {
self.infoModel = [LMCPSpaceInfoModel mj_objectWithKeyValues:response[@"data"]];
[self setupInfoWithModel];
} failure:^(NSError *error) {
[self.leftHeaderPic sd_setImageWithURL:[NSURL URLWithString:[BJUserManager userInfo].head_pic] placeholderImage:kDefaultUserIcon];
self.leftNameLabel.text = [BJUserManager userInfo].nick_name;
}];
}
- (void)requestLoadCPDressList
{
[BJHttpTool BJ_GetMy_cp_txkWithParameters:@{@"type":[NSString stringWithFormat:@"%ld",self.type]} success:^(id response) {
self.dataArr = [LMCPSpaceDressListModel mj_objectArrayWithKeyValuesArray:response[@"data"]];
[self.dressItemView reloadData];
} failure:^(NSError *error) {
}];
}
- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index
{
if (index == 0){
self.type = 1;
}else{
self.type = 9;
}
[self requestLoadCPDressList];
}
//
- (JXCategoryTitleView *)categoryView {
if (!_categoryView) {
_categoryView = [[JXCategoryTitleView alloc] init];
_categoryView.titleFont = YBBoldFont(14);
_categoryView.titleSelectedFont = YBBoldFont(16);
_categoryView.titleColor = HEXCOLORA(0x999999, 1);
_categoryView.titleSelectedColor = HEXCOLOR(0x333333);
_categoryView.delegate = self;
_categoryView.contentEdgeInsetLeft = 60;
_categoryView.contentEdgeInsetRight = 60;
_categoryView.titles = @[@"头像框",@"入场特效"];
// JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init];
// backgroundView.indicatorWidth = 69;
// backgroundView.indicatorHeight = 27;
// backgroundView.indicatorCornerRadius = 13.5;
// backgroundView.indicatorColor = [UIColor bm_colorGradientChangeWithSize:CGSizeMake(79, 27) direction:(FXGradientChangeDirectionHorizontal) startColor:mainLightColor endColor:mainDeepColor];
// _categoryView.indicators = @[backgroundView];
}
return _categoryView;
}
- (NSMutableArray *)dataArr
{
if (!_dataArr){
_dataArr = [NSMutableArray array];
}
return _dataArr;
}
- (QGVAPWrapView *)leftHeaderVapView {
if (!_leftHeaderVapView) {
_leftHeaderVapView = [[QGVAPWrapView alloc] initWithFrame:CGRectZero];
// _leftHeaderVapView.hwd_Delegate = self;
_leftHeaderVapView.contentMode = QGVAPWrapViewContentModeScaleToFill;
_leftHeaderVapView.userInteractionEnabled = NO;
}
return _leftHeaderVapView;
}
- (QGVAPWrapView *)rightHeaderVapView {
if (!_rightHeaderVapView) {
_rightHeaderVapView = [[QGVAPWrapView alloc] initWithFrame:CGRectZero];
// _rightHeaderVapView.hwd_Delegate = self;
_rightHeaderVapView.contentMode = QGVAPWrapViewContentModeScaleToFill;
_rightHeaderVapView.userInteractionEnabled = NO;
}
return _rightHeaderVapView;
}
- (QGVAPWrapView *)texiaoVapView {
if (!_texiaoVapView) {
_texiaoVapView = [[QGVAPWrapView alloc] initWithFrame:CGRectZero];
_texiaoVapView.hwd_Delegate = self;
_texiaoVapView.contentMode = QGVAPWrapViewContentModeScaleToFill;
_texiaoVapView.userInteractionEnabled = NO;
_texiaoVapView.hidden = YES;
}
return _texiaoVapView;
}
- (void)vapWrap_viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container
{
if (container == self.texiaoVapView){
self.texiaoVapView.hidden = YES;
}
}
@end

View File

@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="22505" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="22504"/>
<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" customClass="LMCPSpaceViewController">
<connections>
<outlet property="cateCoverView" destination="0aK-s3-7s8" id="Job-7k-RuU"/>
<outlet property="dressItemView" destination="76g-EA-cPC" id="Myc-l0-tHx"/>
<outlet property="leftHeaderPic" destination="sJd-PV-na8" id="u3K-63-voU"/>
<outlet property="leftNameLabel" destination="Ja1-NL-mjq" id="Y2t-17-Y6Q"/>
<outlet property="leftVapCover" destination="k7U-7U-i90" id="dGF-Qf-0Wt"/>
<outlet property="rightHeaderPic" destination="X0H-IS-qTE" id="XJc-CT-Bmu"/>
<outlet property="rightNameLabel" destination="ze8-xX-VJ9" id="KII-OD-kve"/>
<outlet property="rightVapCover" destination="hPL-Sa-CGX" id="s4c-Nn-NgE"/>
<outlet property="topLevelLabel" destination="TLm-4o-mPF" id="dcc-tv-1Uw"/>
<outlet property="valueLabel" destination="Hv5-Pl-XGV" id="dNT-9K-4E0"/>
<outlet property="view" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/>
</connections>
</placeholder>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" id="i5M-Pr-FkT">
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="cp_kongjian_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Ryg-GP-IRe">
<rect key="frame" x="0.0" y="0.0" width="375" height="812"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default_userIcon" translatesAutoresizingMaskIntoConstraints="NO" id="sJd-PV-na8">
<rect key="frame" x="48.666666666666657" y="134" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="EFn-T8-W7Y"/>
<constraint firstAttribute="height" constant="60" id="xgN-0f-BC9"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="30"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="default_userIcon" translatesAutoresizingMaskIntoConstraints="NO" id="X0H-IS-qTE">
<rect key="frame" x="266.66666666666669" y="134" width="60" height="60"/>
<constraints>
<constraint firstAttribute="width" constant="60" id="YMr-pe-fzT"/>
<constraint firstAttribute="height" constant="60" id="yfz-Uv-76z"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="30"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="k7U-7U-i90">
<rect key="frame" x="38.666666666666657" y="124" width="80" height="80"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hPL-Sa-CGX">
<rect key="frame" x="256.66666666666669" y="124" width="80" height="80"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</view>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="cp_kongjian_aixin" translatesAutoresizingMaskIntoConstraints="NO" id="cuk-9h-KEb">
<rect key="frame" x="138.66666666666666" y="115" width="98" height="98"/>
<constraints>
<constraint firstAttribute="height" constant="98" id="CaL-C8-wgd"/>
<constraint firstAttribute="width" constant="98" id="ki3-no-Sfa"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="LV.0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TLm-4o-mPF">
<rect key="frame" x="163.33333333333334" y="149.66666666666666" width="48.333333333333343" height="28.666666666666657"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="24"/>
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4fi-Ly-4vV">
<rect key="frame" x="155" y="193" width="65" height="20"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0/0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hv5-Pl-XGV">
<rect key="frame" x="10" y="0.0" width="45" height="20"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
<color key="textColor" red="0.5725490196078431" green="0.28627450980392155" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="0.5" colorSpace="custom" customColorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="trailing" secondItem="Hv5-Pl-XGV" secondAttribute="trailing" constant="10" id="4dh-YD-5E1"/>
<constraint firstItem="Hv5-Pl-XGV" firstAttribute="top" secondItem="4fi-Ly-4vV" secondAttribute="top" id="PHm-1d-XkP"/>
<constraint firstItem="Hv5-Pl-XGV" firstAttribute="leading" secondItem="4fi-Ly-4vV" secondAttribute="leading" constant="10" id="PLD-nA-heR"/>
<constraint firstAttribute="height" constant="20" id="cPU-oV-JRI"/>
<constraint firstAttribute="bottom" secondItem="Hv5-Pl-XGV" secondAttribute="bottom" id="gV8-ZW-6q0"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="65" id="yKj-H7-KGb"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
<real key="value" value="10"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</view>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="虚位以待" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Ja1-NL-mjq">
<rect key="frame" x="54" y="214" width="49.333333333333343" height="14.333333333333343"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="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="ze8-xX-VJ9">
<rect key="frame" x="284.33333333333331" y="214" width="24.666666666666686" height="14.333333333333343"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="t4z-qg-WDl">
<rect key="frame" x="15" y="240" width="345" height="512"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="cp_list_bg" translatesAutoresizingMaskIntoConstraints="NO" id="uOR-TF-ybU">
<rect key="frame" x="0.0" y="0.0" width="345" height="512"/>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="专属福利" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fgJ-QT-F3U">
<rect key="frame" x="135.66666666666666" y="15" width="74" height="22"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="0aK-s3-7s8">
<rect key="frame" x="0.0" y="45" width="345" height="44"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="yUR-vV-UcB"/>
</constraints>
</view>
<collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" dataMode="none" translatesAutoresizingMaskIntoConstraints="NO" id="76g-EA-cPC">
<rect key="frame" x="0.0" y="89" width="345" height="423"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<collectionViewFlowLayout key="collectionViewLayout" minimumLineSpacing="10" minimumInteritemSpacing="10" id="PEQ-OE-c8B">
<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>
</collectionView>
</subviews>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<constraints>
<constraint firstAttribute="bottom" secondItem="uOR-TF-ybU" secondAttribute="bottom" id="55Q-K7-rMO"/>
<constraint firstItem="76g-EA-cPC" firstAttribute="leading" secondItem="t4z-qg-WDl" secondAttribute="leading" id="A8E-d0-bFO"/>
<constraint firstAttribute="trailing" secondItem="76g-EA-cPC" secondAttribute="trailing" id="EVU-Y4-x31"/>
<constraint firstItem="fgJ-QT-F3U" firstAttribute="centerX" secondItem="t4z-qg-WDl" secondAttribute="centerX" id="JCa-J5-XNr"/>
<constraint firstItem="76g-EA-cPC" firstAttribute="top" secondItem="0aK-s3-7s8" secondAttribute="bottom" id="KvJ-VJ-pWK"/>
<constraint firstItem="0aK-s3-7s8" firstAttribute="top" secondItem="t4z-qg-WDl" secondAttribute="top" constant="45" id="LHr-lc-XXq"/>
<constraint firstAttribute="trailing" secondItem="uOR-TF-ybU" secondAttribute="trailing" id="PMa-jW-acB"/>
<constraint firstAttribute="trailing" secondItem="0aK-s3-7s8" secondAttribute="trailing" id="We9-JW-iy6"/>
<constraint firstItem="uOR-TF-ybU" firstAttribute="top" secondItem="t4z-qg-WDl" secondAttribute="top" id="XVF-ep-li6"/>
<constraint firstAttribute="bottom" secondItem="76g-EA-cPC" secondAttribute="bottom" id="dkB-Mk-IvW"/>
<constraint firstItem="fgJ-QT-F3U" firstAttribute="top" secondItem="t4z-qg-WDl" secondAttribute="top" constant="15" id="eaS-6i-cEN"/>
<constraint firstItem="uOR-TF-ybU" firstAttribute="leading" secondItem="t4z-qg-WDl" secondAttribute="leading" id="ey4-R7-YTS"/>
<constraint firstItem="0aK-s3-7s8" firstAttribute="leading" secondItem="t4z-qg-WDl" secondAttribute="leading" id="uYG-7R-L02"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="t4z-qg-WDl" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" constant="15" id="01f-Cs-55c"/>
<constraint firstAttribute="bottom" secondItem="t4z-qg-WDl" secondAttribute="bottom" constant="60" id="2d1-l0-dK2"/>
<constraint firstItem="k7U-7U-i90" firstAttribute="top" secondItem="sJd-PV-na8" secondAttribute="top" constant="-10" id="6q3-lJ-f4j"/>
<constraint firstItem="k7U-7U-i90" firstAttribute="leading" secondItem="sJd-PV-na8" secondAttribute="leading" constant="-10" id="76f-gp-nA9"/>
<constraint firstItem="Ja1-NL-mjq" firstAttribute="centerX" secondItem="sJd-PV-na8" secondAttribute="centerX" id="CAf-x3-nUa"/>
<constraint firstItem="cuk-9h-KEb" firstAttribute="leading" secondItem="sJd-PV-na8" secondAttribute="trailing" constant="30" id="ICp-9w-nbb"/>
<constraint firstItem="X0H-IS-qTE" firstAttribute="leading" secondItem="cuk-9h-KEb" secondAttribute="trailing" constant="30" id="IGV-Ay-ZxT"/>
<constraint firstItem="ze8-xX-VJ9" firstAttribute="top" secondItem="hPL-Sa-CGX" secondAttribute="bottom" constant="10" id="Jwh-BT-tx1"/>
<constraint firstItem="TLm-4o-mPF" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="Mjr-jU-wss"/>
<constraint firstItem="4fi-Ly-4vV" firstAttribute="centerX" secondItem="cuk-9h-KEb" secondAttribute="centerX" id="Nhx-bf-XWA"/>
<constraint firstItem="hPL-Sa-CGX" firstAttribute="trailing" secondItem="X0H-IS-qTE" secondAttribute="trailing" constant="10" id="Ni8-ue-h37"/>
<constraint firstItem="cuk-9h-KEb" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="115" id="OfG-ge-WO7"/>
<constraint firstItem="ze8-xX-VJ9" firstAttribute="centerX" secondItem="X0H-IS-qTE" secondAttribute="centerX" id="QSp-Cr-HrT"/>
<constraint firstItem="X0H-IS-qTE" firstAttribute="centerY" secondItem="sJd-PV-na8" secondAttribute="centerY" id="TU7-dk-3fP"/>
<constraint firstItem="Ryg-GP-IRe" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="UHM-b5-m7c"/>
<constraint firstAttribute="trailing" secondItem="t4z-qg-WDl" secondAttribute="trailing" constant="15" id="W68-It-y1B"/>
<constraint firstItem="4fi-Ly-4vV" firstAttribute="bottom" secondItem="cuk-9h-KEb" secondAttribute="bottom" id="ZN5-GX-Byk"/>
<constraint firstItem="Ryg-GP-IRe" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" id="ZeU-bc-KpT"/>
<constraint firstItem="cuk-9h-KEb" firstAttribute="centerY" secondItem="sJd-PV-na8" secondAttribute="centerY" id="bGn-V4-NVe"/>
<constraint firstItem="cuk-9h-KEb" firstAttribute="centerX" secondItem="i5M-Pr-FkT" secondAttribute="centerX" id="bKR-yG-oXA"/>
<constraint firstItem="hPL-Sa-CGX" firstAttribute="leading" secondItem="X0H-IS-qTE" secondAttribute="leading" constant="-10" id="cn1-ye-Djd"/>
<constraint firstItem="Ryg-GP-IRe" firstAttribute="trailing" secondItem="i5M-Pr-FkT" secondAttribute="trailing" id="d3B-eY-4NI"/>
<constraint firstItem="hPL-Sa-CGX" firstAttribute="top" secondItem="X0H-IS-qTE" secondAttribute="top" constant="-10" id="eGl-hH-N04"/>
<constraint firstItem="k7U-7U-i90" firstAttribute="trailing" secondItem="sJd-PV-na8" secondAttribute="trailing" constant="10" id="hLa-lk-uMA"/>
<constraint firstItem="hPL-Sa-CGX" firstAttribute="bottom" secondItem="X0H-IS-qTE" secondAttribute="bottom" constant="10" id="hz2-A2-qBB"/>
<constraint firstItem="TLm-4o-mPF" firstAttribute="centerY" secondItem="cuk-9h-KEb" secondAttribute="centerY" id="mde-Ln-Ytz"/>
<constraint firstItem="TLm-4o-mPF" firstAttribute="centerX" secondItem="cuk-9h-KEb" secondAttribute="centerX" id="ndJ-fS-PYa"/>
<constraint firstItem="t4z-qg-WDl" firstAttribute="top" secondItem="i5M-Pr-FkT" secondAttribute="top" constant="240" id="v5p-7v-AQP"/>
<constraint firstItem="Ja1-NL-mjq" firstAttribute="top" secondItem="k7U-7U-i90" secondAttribute="bottom" constant="10" id="vwK-LB-CRf"/>
<constraint firstAttribute="bottom" secondItem="Ryg-GP-IRe" secondAttribute="bottom" id="yJf-dS-Y8e"/>
<constraint firstItem="k7U-7U-i90" firstAttribute="bottom" secondItem="sJd-PV-na8" secondAttribute="bottom" constant="10" id="yeR-mg-tct"/>
<constraint firstItem="cuk-9h-KEb" firstAttribute="centerY" secondItem="sJd-PV-na8" secondAttribute="centerY" id="zBy-LW-cr5"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="80" y="149"/>
</view>
</objects>
<resources>
<image name="cp_kongjian_aixin" width="98" height="98"/>
<image name="cp_kongjian_bg" width="375" height="812"/>
<image name="cp_list_bg" width="345" height="515"/>
<image name="default_userIcon" width="512" height="512"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>