增加换肤功能

This commit is contained in:
启星
2025-08-14 10:07:49 +08:00
parent f6964c1e89
commit 4f9318d98e
8789 changed files with 978530 additions and 2 deletions

View File

@@ -0,0 +1,34 @@
//
// QXMyRankView.h
// IsLandVoice
//
// Created by 启星 on 2025/3/4.
//
#import <UIKit/UIKit.h>
#import "QXRankModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXMyRankView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *headerImageView;
@property (weak, nonatomic) IBOutlet UILabel *nickNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *valueLabel;
@property (weak, nonatomic) IBOutlet UILabel *rankResultLabel;
@property (weak, nonatomic) IBOutlet UILabel *needLabel;
@property (weak, nonatomic) IBOutlet UIImageView *valueBGImageView;
@property (weak, nonatomic) IBOutlet UIImageView *headerImageView1;
@property (weak, nonatomic) IBOutlet UIImageView *headerImageView2;
@property (weak, nonatomic) IBOutlet UILabel *allNickNameLabel;
@property (weak, nonatomic) IBOutlet UIImageView *headerImageViewBG;
@property(nonatomic,assign)BOOL isCP;
@property (nonatomic,strong)QXMyRankModel *model;
@property (nonatomic,strong)QXMyRankModel *roomModel;
@property (nonatomic,strong)QXMyRankModel *guildModel;
@property (nonatomic,strong)QXMyRankModel *cpModel;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,143 @@
//
// QXMyRankView.m
// IsLandVoice
//
// Created by on 2025/3/4.
//
#import "QXMyRankView.h"
@interface QXMyRankView()
{
CGRect tmpRect;
}
@end
@implementation QXMyRankView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self = [[[NSBundle mainBundle]loadNibNamed:@"QXMyRankView" owner:nil options:nil] lastObject];
tmpRect = frame;
self.frame = frame;
}
return self;
}
-(void)setIsCP:(BOOL)isCP{
_isCP = isCP;
self.headerImageView1.hidden = !isCP;
self.headerImageView2.hidden = !isCP;
self.allNickNameLabel.hidden = !isCP;
self.headerImageViewBG.hidden = !isCP;
self.headerImageView.hidden = isCP;
self.nickNameLabel.hidden = isCP;
self.valueLabel.hidden = isCP;
self.valueBGImageView.hidden = isCP;
}
-(void)setModel:(QXMyRankModel *)model{
_model = model;
self.nickNameLabel.text = model.nickname;
if (model.rank.intValue <= 0) {
self.rankResultLabel.text = @"暂未上榜";
}else{
NSString *s = [NSString stringWithFormat:@"第%@名",model.rank];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:s];
[attr yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(1, model.rank.length)];
self.rankResultLabel.attributedText = attr;
}
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.valueLabel.text = model.total;
NSString *diff = model.diff;
NSString *s1 = [NSString stringWithFormat:@"距离上一名差%@",diff];
NSMutableAttributedString *attr1 = [[NSMutableAttributedString alloc] initWithString:s1];
[attr1 yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(6, diff.length)];
self.needLabel.attributedText = attr1;
}
-(void)setRoomModel:(QXMyRankModel *)roomModel{
_roomModel = roomModel;
self.nickNameLabel.text = roomModel.room_name;
if (roomModel.rank.intValue <= 0) {
self.rankResultLabel.text = @"暂未上榜";
}else{
NSString *s = [NSString stringWithFormat:@"第%@名",roomModel.rank];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:s];
[attr yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(1, roomModel.rank.length)];
self.rankResultLabel.attributedText = attr;
}
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:roomModel.room_cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.valueLabel.text = roomModel.total;
NSString *diff = roomModel.diff;
NSString *s1 = [NSString stringWithFormat:@"距离上一名差%@",roomModel.diff];
NSMutableAttributedString *attr1 = [[NSMutableAttributedString alloc] initWithString:s1];
[attr1 yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(6, diff.length)];
self.needLabel.attributedText = attr1;
}
-(void)setGuildModel:(QXMyRankModel *)guildModel{
_guildModel = guildModel;
if (guildModel.guild_name.length>0) {
self.nickNameLabel.text = guildModel.guild_name;
}else{
self.nickNameLabel.text = @"暂无公会";
}
if (guildModel.rank.intValue <= 0) {
self.rankResultLabel.text = @"暂未上榜";
}else{
NSString *s = [NSString stringWithFormat:@"第%@名",guildModel.rank];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:s];
[attr yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(1, guildModel.rank.length)];
self.rankResultLabel.attributedText = attr;
}
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:guildModel.cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.valueLabel.text = guildModel.total;
NSString *diff = guildModel.diff;
NSString *s1 = [NSString stringWithFormat:@"距离上一名差%@",guildModel.diff];
NSMutableAttributedString *attr1 = [[NSMutableAttributedString alloc] initWithString:s1];
[attr1 yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(6, diff.length)];
self.needLabel.attributedText = attr1;
}
//
-(void)setCpModel:(QXMyRankModel *)cpModel{
_cpModel = cpModel;
if (cpModel.nickname1.length == 0 || cpModel== nil) {
// self.allNickNameLabel.text = [NSString stringWithFormat:@"%@",cpModel.nickname];
self.allNickNameLabel.text = [NSString stringWithFormat:@"%@",QXGlobal.shareGlobal.loginModel.nickname];
[self.headerImageView1 sd_setImageWithURL:[NSURL URLWithString:QXGlobal.shareGlobal.loginModel.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.needLabel.text = @"-";
}else{
self.allNickNameLabel.text = [NSString stringWithFormat:@"%@\n%@",cpModel.nickname,cpModel.nickname1];
[self.headerImageView1 sd_setImageWithURL:[NSURL URLWithString:cpModel.user_avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
[self.headerImageView2 sd_setImageWithURL:[NSURL URLWithString:cpModel.user_avatar1] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
NSString *diff = cpModel.diff;
NSString *s1 = [NSString stringWithFormat:@"距离上一名差%@",cpModel.diff];
NSMutableAttributedString *attr1 = [[NSMutableAttributedString alloc] initWithString:s1];
[attr1 yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(6, diff.length)];
self.needLabel.attributedText = attr1;
}
if (cpModel.rank.intValue <= 0) {
self.rankResultLabel.text = @"暂未上榜";
}else{
NSString *s = [NSString stringWithFormat:@"第%@名",cpModel.rank];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:s];
[attr yy_setColor:[UIColor colorWithHexString:@"#FF8ACC"] range:NSMakeRange(1, cpModel.rank.length)];
self.rankResultLabel.attributedText = attr;
}
}
-(void)layoutSubviews{
[super layoutSubviews];
self.frame = tmpRect;
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
}
*/
@end

View File

@@ -0,0 +1,162 @@
<?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" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<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="QXMyRankView">
<rect key="frame" x="0.0" y="0.0" width="408" height="60"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_rank_bg" translatesAutoresizingMaskIntoConstraints="NO" id="ePb-yj-J0N">
<rect key="frame" x="16" y="0.0" width="376" height="60"/>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="vLt-zu-0Mv">
<rect key="frame" x="56" y="12.666666666666664" width="35" height="35"/>
<constraints>
<constraint firstAttribute="width" constant="35" id="9ZR-5q-S9k"/>
<constraint firstAttribute="height" constant="35" id="f46-t6-Byz"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="17.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的昵称" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EWO-Iu-HUp">
<rect key="frame" x="101" y="6.6666666666666679" width="51.666666666666657" height="16"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="暂未上榜" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Uow-ZO-SrA">
<rect key="frame" x="300.33333333333331" y="6.666666666666667" width="51.666666666666686" height="15.666666666666664"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="距离上榜差50" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nlo-j2-wvh">
<rect key="frame" x="269.66666666666669" y="36.333333333333336" width="82.333333333333314" height="15.666666666666664"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_rank_value_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Wyj-Op-wbc">
<rect key="frame" x="101" y="35.666666666666664" width="80" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="80" id="0gn-CS-aaa"/>
<constraint firstAttribute="height" constant="17" id="qwh-GR-5C6"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JHc-0B-ehZ">
<rect key="frame" x="121" y="33.666666666666664" width="50" height="17"/>
<constraints>
<constraint firstAttribute="height" constant="17" id="9JK-sq-aEm"/>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="TGV-kn-GoQ"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="11"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="gJ7-Yb-gZ2">
<rect key="frame" x="56" y="15" width="30" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="EgB-Jp-opH"/>
<constraint firstAttribute="width" constant="30" id="HzL-Mh-zxc"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="15"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="HyS-dG-hw0">
<rect key="frame" x="86" y="15" width="30" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="Z9M-Lo-cGv"/>
<constraint firstAttribute="height" constant="30" id="mfF-fJ-KoI"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="15"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView hidden="YES" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="my_real_love_bg" translatesAutoresizingMaskIntoConstraints="NO" id="EkQ-iX-tic">
<rect key="frame" x="56" y="15" width="60" height="30"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="15"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="我的昵称" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fUo-Tv-Mau">
<rect key="frame" x="126.00000000000001" y="22.333333333333332" width="51.666666666666671" height="15.666666666666668"/>
<fontDescription key="fontDescription" type="system" pointSize="13"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
<constraints>
<constraint firstItem="vLt-zu-0Mv" firstAttribute="top" secondItem="EWO-Iu-HUp" secondAttribute="bottom" constant="-10" id="1NF-b5-nfv"/>
<constraint firstAttribute="bottom" secondItem="ePb-yj-J0N" secondAttribute="bottom" id="2ez-kJ-oMa"/>
<constraint firstItem="Wyj-Op-wbc" firstAttribute="leading" secondItem="vLt-zu-0Mv" secondAttribute="trailing" constant="10" id="5Bd-P6-sfC"/>
<constraint firstItem="fUo-Tv-Mau" firstAttribute="centerY" secondItem="EkQ-iX-tic" secondAttribute="centerY" id="5Oq-oZ-Oxc"/>
<constraint firstItem="gJ7-Yb-gZ2" firstAttribute="centerY" secondItem="EkQ-iX-tic" secondAttribute="centerY" id="7D0-2f-HJ3"/>
<constraint firstAttribute="trailing" secondItem="ePb-yj-J0N" secondAttribute="trailing" constant="16" id="9lv-Pb-add"/>
<constraint firstItem="ePb-yj-J0N" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="9qN-t8-IOK"/>
<constraint firstItem="Uow-ZO-SrA" firstAttribute="trailing" secondItem="ePb-yj-J0N" secondAttribute="trailing" constant="-40" id="AZi-2y-FnI"/>
<constraint firstItem="ePb-yj-J0N" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="Ecs-gP-sBp"/>
<constraint firstItem="fUo-Tv-Mau" firstAttribute="leading" secondItem="EkQ-iX-tic" secondAttribute="trailing" constant="10" id="GGy-WQ-4Cv"/>
<constraint firstItem="gJ7-Yb-gZ2" firstAttribute="leading" secondItem="EkQ-iX-tic" secondAttribute="leading" id="GRK-mL-cZO"/>
<constraint firstItem="nlo-j2-wvh" firstAttribute="trailing" secondItem="Uow-ZO-SrA" secondAttribute="trailing" id="J8p-E3-fdD"/>
<constraint firstItem="HyS-dG-hw0" firstAttribute="centerY" secondItem="EkQ-iX-tic" secondAttribute="centerY" id="LRG-fZ-XWX"/>
<constraint firstItem="EWO-Iu-HUp" firstAttribute="leading" secondItem="vLt-zu-0Mv" secondAttribute="trailing" constant="10" id="MeF-57-8oP"/>
<constraint firstItem="EkQ-iX-tic" firstAttribute="centerY" secondItem="ePb-yj-J0N" secondAttribute="centerY" id="MpR-7z-Dm1"/>
<constraint firstItem="vLt-zu-0Mv" firstAttribute="leading" secondItem="ePb-yj-J0N" secondAttribute="leading" constant="40" id="QiJ-a5-bQ5"/>
<constraint firstItem="Wyj-Op-wbc" firstAttribute="top" secondItem="vLt-zu-0Mv" secondAttribute="bottom" constant="-12" id="WiT-Ey-ySS"/>
<constraint firstItem="JHc-0B-ehZ" firstAttribute="centerY" secondItem="Wyj-Op-wbc" secondAttribute="centerY" constant="-2" id="X1b-hB-RuL"/>
<constraint firstItem="EkQ-iX-tic" firstAttribute="leading" secondItem="vLt-zu-0Mv" secondAttribute="leading" id="dnZ-Np-Wls"/>
<constraint firstItem="nlo-j2-wvh" firstAttribute="centerY" secondItem="Wyj-Op-wbc" secondAttribute="centerY" id="fec-C6-XSj"/>
<constraint firstItem="HyS-dG-hw0" firstAttribute="trailing" secondItem="EkQ-iX-tic" secondAttribute="trailing" id="h9A-UL-yEO"/>
<constraint firstItem="JHc-0B-ehZ" firstAttribute="leading" secondItem="Wyj-Op-wbc" secondAttribute="trailing" constant="-60" id="ot7-bi-rID"/>
<constraint firstItem="vLt-zu-0Mv" firstAttribute="centerY" secondItem="ePb-yj-J0N" secondAttribute="centerY" id="uGa-zk-S0C"/>
<constraint firstItem="Uow-ZO-SrA" firstAttribute="centerY" secondItem="EWO-Iu-HUp" secondAttribute="centerY" id="vBz-ca-Ljt"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="allNickNameLabel" destination="fUo-Tv-Mau" id="GlN-lE-r94"/>
<outlet property="headerImageView" destination="vLt-zu-0Mv" id="xJO-0N-aRk"/>
<outlet property="headerImageView1" destination="gJ7-Yb-gZ2" id="npX-TO-x84"/>
<outlet property="headerImageView2" destination="HyS-dG-hw0" id="564-gi-7YC"/>
<outlet property="headerImageViewBG" destination="EkQ-iX-tic" id="QzQ-tu-Uo1"/>
<outlet property="needLabel" destination="nlo-j2-wvh" id="xPu-8V-gxg"/>
<outlet property="nickNameLabel" destination="EWO-Iu-HUp" id="Qgf-l4-BE4"/>
<outlet property="rankResultLabel" destination="Uow-ZO-SrA" id="mWr-iL-94L"/>
<outlet property="valueBGImageView" destination="Wyj-Op-wbc" id="gAJ-Fl-hIx"/>
<outlet property="valueLabel" destination="JHc-0B-ehZ" id="NXA-0r-kSz"/>
</connections>
<point key="canvasLocation" x="54.961832061068698" y="8.4507042253521139"/>
</view>
</objects>
<resources>
<image name="my_rank_bg" width="343" height="62"/>
<image name="my_rank_value_bg" width="43" height="17"/>
<image name="my_real_love_bg" width="60" height="30"/>
<image name="user_header_placehoulder" width="40" height="40"/>
<systemColor name="systemBackgroundColor">
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</systemColor>
</resources>
</document>

View File

@@ -0,0 +1,23 @@
//
// QXRankCPListCell.h
// IsLandVoice
//
// Created by 启星 on 2025/3/4.
//
#import <UIKit/UIKit.h>
//#import "SRRankListResponse.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXRankCPListCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *numberLabel;
@property (weak, nonatomic) IBOutlet UIImageView *headerImageView1;
@property (weak, nonatomic) IBOutlet UIImageView *headerImageView2;
@property (weak, nonatomic) IBOutlet UILabel *valueLabel;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
//@property (nonatomic,strong)SRRankListResponseModel *model;
+(instancetype)cellWithTableView:(UITableView *)tableView;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,38 @@
//
// QXRankCPListCell.m
// IsLandVoice
//
// Created by on 2025/3/4.
//
#import "QXRankCPListCell.h"
@implementation QXRankCPListCell
+(instancetype)cellWithTableView:(UITableView *)tableView{
static NSString *cellId = @"QXRankCPListCell";
QXRankCPListCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
if (!cell) {
cell = [[NSBundle mainBundle] loadNibNamed:cellId owner:nil options:nil].lastObject;
}
return cell;
}
//-(void)setModel:(SRRankListResponseModel *)model{
// _model = model;
// [self.headerImageView1 sd_setImageWithURL:[NSURL URLWithString:model.head_picture1] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
// [self.headerImageView2 sd_setImageWithURL:[NSURL URLWithString:model.head_picture2] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
// self.nameLabel.text = [NSString stringWithFormat:@"%@\n%@",model.nickname1,model.nickname2];
// self.valueLabel.text = model.number;
// self.numberLabel.text = model.rank;
//}
- (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

View File

@@ -0,0 +1,122 @@
<?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>
<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="132" id="KGk-i7-Jjw" customClass="QXRankCPListCell">
<rect key="frame" x="0.0" y="0.0" width="574" height="132"/>
<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="574" height="132"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="BeV-U5-bqr">
<rect key="frame" x="16" y="57.666666666666657" width="30" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="h6P-AH-kzH"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="8nl-Wf-Mmq">
<rect key="frame" x="56" y="51" width="30" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="76g-jc-5fs"/>
<constraint firstAttribute="height" constant="30" id="Q8C-ug-bGh"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="15"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="Tzo-q6-iXL">
<rect key="frame" x="86" y="51" width="30" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="Xau-Zt-JhU"/>
<constraint firstAttribute="width" constant="30" id="xJm-En-LYo"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="15"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Group 7018" translatesAutoresizingMaskIntoConstraints="NO" id="gXN-qt-239">
<rect key="frame" x="56" y="51" width="60" height="30"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="15"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="33" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TlQ-z7-ShX">
<rect key="frame" x="503" y="57.666666666666657" width="55" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="55" id="sNf-Qe-nxg"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Vector" translatesAutoresizingMaskIntoConstraints="NO" id="BVp-92-65o">
<rect key="frame" x="473" y="56" width="20" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="20" id="Bp3-AN-p7l"/>
<constraint firstAttribute="height" constant="20" id="g7q-UD-YrY"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zuj-eZ-aW5">
<rect key="frame" x="132" y="57.666666666666657" width="200" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="200" id="qsT-0P-Czq"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="BeV-U5-bqr" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="4M3-5B-OAx"/>
<constraint firstItem="TlQ-z7-ShX" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="BD1-yo-zhe"/>
<constraint firstItem="8nl-Wf-Mmq" firstAttribute="centerY" secondItem="gXN-qt-239" secondAttribute="centerY" id="Ckp-yY-L3M"/>
<constraint firstAttribute="trailing" secondItem="TlQ-z7-ShX" secondAttribute="trailing" constant="16" id="FXb-rb-XhL"/>
<constraint firstItem="BVp-92-65o" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="JYH-MG-9z5"/>
<constraint firstItem="zuj-eZ-aW5" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Qu6-8Y-86z"/>
<constraint firstItem="gXN-qt-239" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="WLC-cw-VZE"/>
<constraint firstItem="BeV-U5-bqr" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="16" id="aU8-C2-YB9"/>
<constraint firstItem="gXN-qt-239" firstAttribute="leading" secondItem="BeV-U5-bqr" secondAttribute="trailing" constant="10" id="brH-hr-L3t"/>
<constraint firstItem="Tzo-q6-iXL" firstAttribute="centerY" secondItem="gXN-qt-239" secondAttribute="centerY" id="h5Q-tj-sbt"/>
<constraint firstItem="zuj-eZ-aW5" firstAttribute="leading" secondItem="Tzo-q6-iXL" secondAttribute="trailing" constant="16" id="j7g-oT-suR"/>
<constraint firstItem="8nl-Wf-Mmq" firstAttribute="leading" secondItem="gXN-qt-239" secondAttribute="leading" id="jSg-tu-5dg"/>
<constraint firstItem="Tzo-q6-iXL" firstAttribute="trailing" secondItem="gXN-qt-239" secondAttribute="trailing" id="oK3-Qu-IPm"/>
<constraint firstItem="TlQ-z7-ShX" firstAttribute="leading" secondItem="BVp-92-65o" secondAttribute="trailing" constant="10" id="uB6-WK-EBJ"/>
</constraints>
</tableViewCellContentView>
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
<connections>
<outlet property="headerImageView1" destination="8nl-Wf-Mmq" id="PFH-Lb-GOZ"/>
<outlet property="headerImageView2" destination="Tzo-q6-iXL" id="3Rl-Ah-vhL"/>
<outlet property="nameLabel" destination="zuj-eZ-aW5" id="hWV-Rr-alr"/>
<outlet property="numberLabel" destination="BeV-U5-bqr" id="xWa-Tn-RmZ"/>
<outlet property="valueLabel" destination="TlQ-z7-ShX" id="iHB-8v-hLR"/>
</connections>
<point key="canvasLocation" x="332.82442748091603" y="50.70422535211268"/>
</tableViewCell>
</objects>
<resources>
<image name="Group 7018" width="60" height="30"/>
<image name="Vector" width="14" height="14"/>
<image name="user_header_placehoulder" width="128" height="128"/>
</resources>
</document>

View File

@@ -0,0 +1,34 @@
//
// QXRankCPTopThreeView.h
// IsLandVoice
//
// Created by 启星 on 2025/3/4.
//
#import <UIKit/UIKit.h>
#import "QXRankModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXRankCPTopThreeView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *firstHeaderImage;
@property (weak, nonatomic) IBOutlet UIImageView *firstHeaderImage2;
@property (weak, nonatomic) IBOutlet UILabel *firstNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *firstIDLabel;
@property (weak, nonatomic) IBOutlet UILabel *firstRankValueLabel;
@property (weak, nonatomic) IBOutlet UIImageView *secondHeaderImage;
@property (weak, nonatomic) IBOutlet UIImageView *secondHeaderImage2;
@property (weak, nonatomic) IBOutlet UILabel *secondNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *secondIDLabel;
@property (weak, nonatomic) IBOutlet UILabel *secondRankValueLabel;
@property (weak, nonatomic) IBOutlet UIImageView *thirdHeaderImage;
@property (weak, nonatomic) IBOutlet UIImageView *thirdHeaderImage2;
@property (weak, nonatomic) IBOutlet UILabel *thirdNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *thirdIDLabel;
@property (weak, nonatomic) IBOutlet UILabel *thirdRankValueLabel;
-(void)resetView;
@property (nonatomic,strong)NSArray<QXMyRankModel*>*list;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,78 @@
//
// QXRankCPTopThreeView.m
// IsLandVoice
//
// Created by on 2025/3/4.
//
#import "QXRankCPTopThreeView.h"
@implementation QXRankCPTopThreeView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self = [[[NSBundle mainBundle]loadNibNamed:@"QXRankCPTopThreeView" owner:nil options:nil] lastObject];
self.frame = frame;
}
return self;
}
-(void)resetView{
self.firstHeaderImage.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.firstHeaderImage2.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.secondHeaderImage.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.secondHeaderImage2.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.thirdHeaderImage.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.secondHeaderImage2.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.firstNameLabel.text = @"虚位以待";
self.secondNameLabel.text = @"虚位以待";
self.thirdNameLabel.text = @"虚位以待";
self.firstIDLabel.text = @"虚位以待";
self.secondIDLabel.text = @"虚位以待";
self.thirdIDLabel.text = @"虚位以待";
}
-(void)setList:(NSArray<QXMyRankModel *> *)list{
QXMyRankModel *firstModel;
QXMyRankModel *secondModel;
QXMyRankModel *thirdModel;
if (list.count >= 3) {
firstModel = list[0];
secondModel = list[1];
thirdModel = list[2];
}
if (list.count == 2) {
firstModel = list[0];
secondModel = list[1];
}
if (list.count == 1) {
firstModel = list[0];
}
if (firstModel) {
[self.firstHeaderImage sd_setImageWithURL:[NSURL URLWithString:firstModel.user_avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
[self.firstHeaderImage2 sd_setImageWithURL:[NSURL URLWithString:firstModel.user_avatar1] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.firstNameLabel.text = firstModel.nickname;
self.firstIDLabel.text = firstModel.nickname1;
self.firstRankValueLabel.text = firstModel.total;
}
if (secondModel) {
[self.secondHeaderImage sd_setImageWithURL:[NSURL URLWithString:secondModel.user_avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
[self.secondHeaderImage2 sd_setImageWithURL:[NSURL URLWithString:secondModel.user_avatar1] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.secondNameLabel.text = secondModel.nickname;
self.secondIDLabel.text = secondModel.nickname1;
self.secondRankValueLabel.text = secondModel.total;
}
if (thirdModel) {
[self.thirdHeaderImage sd_setImageWithURL:[NSURL URLWithString:thirdModel.user_avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
[self.thirdHeaderImage2 sd_setImageWithURL:[NSURL URLWithString:thirdModel.user_avatar1] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.thirdNameLabel.text = thirdModel.nickname;
self.thirdIDLabel.text = thirdModel.nickname1;
self.thirdRankValueLabel.text = thirdModel.total;
}
}
@end

View File

@@ -0,0 +1,380 @@
<?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" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<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="WH3-Kj-tPl" userLabel="RankCP Top Three View" customClass="QXRankCPTopThreeView">
<rect key="frame" x="0.0" y="0.0" width="438" height="230"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="fkt-5i-wGo">
<rect key="frame" x="16.000000000000007" y="30" width="126.66666666666669" height="190"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_second_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Iug-6G-0qC">
<rect key="frame" x="0.0" y="30" width="126.66666666666667" height="150"/>
<constraints>
<constraint firstAttribute="height" constant="150" id="gQo-o1-sqd"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="TYB-N3-5Cs">
<rect key="frame" x="15.333333333333329" y="12.666666666666664" width="45" height="45"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="VXe-ml-VYq"/>
<constraint firstAttribute="width" constant="45" id="rjf-AN-Hla"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="Uue-tQ-gRt">
<rect key="frame" x="66.333333333333329" y="12.666666666666664" width="45" height="45"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="G4Y-CK-nNz"/>
<constraint firstAttribute="height" constant="45" id="Nlc-TP-CLE"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_real_love_second_header" translatesAutoresizingMaskIntoConstraints="NO" id="Bcx-vW-3yy">
<rect key="frame" x="8.3333333333333286" y="0.0" width="110" height="70"/>
<constraints>
<constraint firstAttribute="height" constant="70" id="A1C-5f-uA2"/>
<constraint firstAttribute="width" constant="110" id="iXo-3I-ff5"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TOP 2" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="K2f-Fr-81A">
<rect key="frame" x="0.0" y="75" width="126.66666666666667" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="hB1-Ix-7ZD"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="heavy" pointSize="17"/>
<color key="textColor" red="0.27058823529999998" green="0.52549019610000003" blue="0.86666666670000003" alpha="1" colorSpace="calibratedRGB"/>
<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="ckM-s4-iVh">
<rect key="frame" x="0.0" y="102" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<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="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JgV-Ob-RU0">
<rect key="frame" x="0.0" y="122" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_real_love_value_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Ub0-eH-9eE">
<rect key="frame" x="21" y="150" width="85" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="XvT-C9-MnK"/>
<constraint firstAttribute="width" constant="85" id="n7G-4G-8KW"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hGy-Aa-hUg">
<rect key="frame" x="41" y="149.66666666666666" width="60" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="7YG-gw-rwJ"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="JgV-Ob-RU0" firstAttribute="trailing" secondItem="Iug-6G-0qC" secondAttribute="trailing" id="1Og-TM-wT2"/>
<constraint firstItem="ckM-s4-iVh" firstAttribute="trailing" secondItem="Iug-6G-0qC" secondAttribute="trailing" id="4Sx-mg-E3i"/>
<constraint firstAttribute="height" constant="190" id="ABA-Y3-oCb"/>
<constraint firstItem="hGy-Aa-hUg" firstAttribute="leading" secondItem="Ub0-eH-9eE" secondAttribute="leading" constant="20" id="CR1-VP-mLr"/>
<constraint firstItem="K2f-Fr-81A" firstAttribute="trailing" secondItem="Iug-6G-0qC" secondAttribute="trailing" id="GUo-Kg-Ugg"/>
<constraint firstItem="Bcx-vW-3yy" firstAttribute="top" secondItem="Iug-6G-0qC" secondAttribute="top" constant="-30" id="K3K-I7-Mse"/>
<constraint firstItem="K2f-Fr-81A" firstAttribute="top" secondItem="Bcx-vW-3yy" secondAttribute="bottom" constant="5" id="OOK-uW-dSc"/>
<constraint firstItem="ckM-s4-iVh" firstAttribute="top" secondItem="K2f-Fr-81A" secondAttribute="bottom" constant="2" id="UWZ-MX-AEP"/>
<constraint firstItem="Uue-tQ-gRt" firstAttribute="centerY" secondItem="Bcx-vW-3yy" secondAttribute="centerY" id="XSK-F2-qmZ"/>
<constraint firstItem="hGy-Aa-hUg" firstAttribute="trailing" secondItem="Ub0-eH-9eE" secondAttribute="trailing" constant="-5" id="XYd-S9-Ss1"/>
<constraint firstItem="K2f-Fr-81A" firstAttribute="leading" secondItem="Iug-6G-0qC" secondAttribute="leading" id="dJB-al-53x"/>
<constraint firstItem="JgV-Ob-RU0" firstAttribute="top" secondItem="ckM-s4-iVh" secondAttribute="bottom" constant="3" id="eQc-Lv-ulO"/>
<constraint firstItem="Bcx-vW-3yy" firstAttribute="centerX" secondItem="Iug-6G-0qC" secondAttribute="centerX" id="faz-Hl-edq"/>
<constraint firstItem="ckM-s4-iVh" firstAttribute="leading" secondItem="Iug-6G-0qC" secondAttribute="leading" id="gX7-PV-ozC"/>
<constraint firstItem="TYB-N3-5Cs" firstAttribute="centerY" secondItem="Bcx-vW-3yy" secondAttribute="centerY" id="hkb-ID-ZKF"/>
<constraint firstItem="Ub0-eH-9eE" firstAttribute="centerX" secondItem="Iug-6G-0qC" secondAttribute="centerX" id="iUQ-2w-Hfa"/>
<constraint firstItem="Ub0-eH-9eE" firstAttribute="bottom" secondItem="Iug-6G-0qC" secondAttribute="bottom" constant="-10" id="k6x-oF-iTh"/>
<constraint firstItem="JgV-Ob-RU0" firstAttribute="leading" secondItem="Iug-6G-0qC" secondAttribute="leading" id="kKd-6b-cDc"/>
<constraint firstItem="TYB-N3-5Cs" firstAttribute="leading" secondItem="Bcx-vW-3yy" secondAttribute="leading" constant="7" id="kwC-r0-riC"/>
<constraint firstAttribute="trailing" secondItem="Iug-6G-0qC" secondAttribute="trailing" id="l0a-kH-9cz"/>
<constraint firstAttribute="bottom" secondItem="Iug-6G-0qC" secondAttribute="bottom" constant="10" id="ln3-d3-UhK"/>
<constraint firstItem="Uue-tQ-gRt" firstAttribute="trailing" secondItem="Bcx-vW-3yy" secondAttribute="trailing" constant="-7" id="sxx-Qn-Ueb"/>
<constraint firstItem="hGy-Aa-hUg" firstAttribute="centerY" secondItem="Ub0-eH-9eE" secondAttribute="centerY" id="txo-0u-d1T"/>
<constraint firstItem="Iug-6G-0qC" firstAttribute="leading" secondItem="fkt-5i-wGo" secondAttribute="leading" id="wQu-oQ-weZ"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="9kQ-2p-WMi">
<rect key="frame" x="155.66666666666666" y="10" width="126.66666666666666" height="190"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_first_bg" translatesAutoresizingMaskIntoConstraints="NO" id="ELT-qa-QKO">
<rect key="frame" x="0.0" y="30" width="126.66666666666667" height="150"/>
<constraints>
<constraint firstAttribute="height" constant="150" id="YhW-oT-Z6e"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="aGF-cs-ovJ">
<rect key="frame" x="15.333333333333343" y="12.666666666666671" width="45" height="45"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="8ni-RR-NlK"/>
<constraint firstAttribute="width" constant="45" id="GMo-sX-7vO"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="hOp-Tb-y2w">
<rect key="frame" x="66.333333333333343" y="12.666666666666671" width="45" height="45"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="DOF-IB-M0H"/>
<constraint firstAttribute="width" constant="45" id="lVk-tl-f4v"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_real_love_first_header" translatesAutoresizingMaskIntoConstraints="NO" id="TNm-GF-bzb">
<rect key="frame" x="8.3333333333333428" y="0.0" width="110" height="70"/>
<constraints>
<constraint firstAttribute="width" constant="110" id="lhO-rb-C9j"/>
<constraint firstAttribute="height" constant="70" id="nVg-Kn-hbw"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TOP 1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nkC-Y0-Yh2">
<rect key="frame" x="0.0" y="75" width="126.66666666666667" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="bMg-wC-0ft"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="heavy" pointSize="17"/>
<color key="textColor" red="0.84313725490000002" green="0.30196078430000001" blue="0.17254901959999999" alpha="1" colorSpace="calibratedRGB"/>
<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="Tww-5a-ZSt">
<rect key="frame" x="0.0" y="102" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<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="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Is5-JJ-W6T">
<rect key="frame" x="0.0" y="122" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_real_love_value_bg" translatesAutoresizingMaskIntoConstraints="NO" id="PqR-bx-jVl">
<rect key="frame" x="21" y="150" width="85" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="85" id="hg1-6a-sS7"/>
<constraint firstAttribute="height" constant="20" id="zlM-wn-im8"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z7f-CG-uOk">
<rect key="frame" x="41" y="149.66666666666666" width="60" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="zIF-Xs-nJZ"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="TNm-GF-bzb" firstAttribute="centerX" secondItem="ELT-qa-QKO" secondAttribute="centerX" id="3lA-4h-ICt"/>
<constraint firstItem="Tww-5a-ZSt" firstAttribute="leading" secondItem="ELT-qa-QKO" secondAttribute="leading" id="9SJ-zE-Zof"/>
<constraint firstItem="Z7f-CG-uOk" firstAttribute="centerY" secondItem="PqR-bx-jVl" secondAttribute="centerY" id="9hN-IO-phN"/>
<constraint firstItem="TNm-GF-bzb" firstAttribute="top" secondItem="ELT-qa-QKO" secondAttribute="top" constant="-30" id="BMQ-CI-bxW"/>
<constraint firstItem="nkC-Y0-Yh2" firstAttribute="top" secondItem="TNm-GF-bzb" secondAttribute="bottom" constant="5" id="CWj-Yb-D1a"/>
<constraint firstAttribute="trailing" secondItem="ELT-qa-QKO" secondAttribute="trailing" id="Cog-Qb-Mox"/>
<constraint firstItem="nkC-Y0-Yh2" firstAttribute="leading" secondItem="ELT-qa-QKO" secondAttribute="leading" id="Ex4-aF-JNz"/>
<constraint firstItem="Is5-JJ-W6T" firstAttribute="top" secondItem="Tww-5a-ZSt" secondAttribute="bottom" constant="3" id="FOy-cZ-MXS"/>
<constraint firstItem="Z7f-CG-uOk" firstAttribute="leading" secondItem="PqR-bx-jVl" secondAttribute="leading" constant="20" id="NvH-oE-6jV"/>
<constraint firstItem="aGF-cs-ovJ" firstAttribute="centerY" secondItem="TNm-GF-bzb" secondAttribute="centerY" id="OCy-jI-csN"/>
<constraint firstAttribute="height" constant="190" id="QOM-MI-gTQ"/>
<constraint firstItem="Is5-JJ-W6T" firstAttribute="leading" secondItem="ELT-qa-QKO" secondAttribute="leading" id="Rho-aP-c0C"/>
<constraint firstItem="Is5-JJ-W6T" firstAttribute="trailing" secondItem="ELT-qa-QKO" secondAttribute="trailing" id="Rnf-8P-Z4u"/>
<constraint firstItem="hOp-Tb-y2w" firstAttribute="centerY" secondItem="TNm-GF-bzb" secondAttribute="centerY" id="TGJ-LC-B46"/>
<constraint firstAttribute="bottom" secondItem="ELT-qa-QKO" secondAttribute="bottom" constant="10" id="UIG-Xk-5Qi"/>
<constraint firstItem="hOp-Tb-y2w" firstAttribute="trailing" secondItem="TNm-GF-bzb" secondAttribute="trailing" constant="-7" id="UYt-7H-9zM"/>
<constraint firstItem="Tww-5a-ZSt" firstAttribute="trailing" secondItem="ELT-qa-QKO" secondAttribute="trailing" id="Zhi-MT-iil"/>
<constraint firstItem="ELT-qa-QKO" firstAttribute="leading" secondItem="9kQ-2p-WMi" secondAttribute="leading" id="bJd-Y2-qtw"/>
<constraint firstItem="PqR-bx-jVl" firstAttribute="bottom" secondItem="ELT-qa-QKO" secondAttribute="bottom" constant="-10" id="ntf-em-pv2"/>
<constraint firstItem="Tww-5a-ZSt" firstAttribute="top" secondItem="nkC-Y0-Yh2" secondAttribute="bottom" constant="2" id="r1Q-uw-MqZ"/>
<constraint firstItem="aGF-cs-ovJ" firstAttribute="leading" secondItem="TNm-GF-bzb" secondAttribute="leading" constant="7" id="sv8-uW-tJM"/>
<constraint firstItem="nkC-Y0-Yh2" firstAttribute="trailing" secondItem="ELT-qa-QKO" secondAttribute="trailing" id="vH7-h0-pFA"/>
<constraint firstItem="Z7f-CG-uOk" firstAttribute="trailing" secondItem="PqR-bx-jVl" secondAttribute="trailing" constant="-5" id="vk5-8p-bCe"/>
<constraint firstItem="PqR-bx-jVl" firstAttribute="centerX" secondItem="ELT-qa-QKO" secondAttribute="centerX" id="wQI-7G-gMv"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W20-Fx-QTq">
<rect key="frame" x="295.33333333333331" y="30" width="126.66666666666669" height="190"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_third_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Nxb-5v-S7f">
<rect key="frame" x="0.0" y="30" width="126.66666666666667" height="150"/>
<constraints>
<constraint firstAttribute="height" constant="150" id="2f8-Mc-yvp"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="oRz-z8-zG5">
<rect key="frame" x="15.333333333333371" y="12.666666666666664" width="45" height="45"/>
<constraints>
<constraint firstAttribute="width" constant="45" id="9a8-Ar-pKG"/>
<constraint firstAttribute="height" constant="45" id="DTn-rb-qVy"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="jh5-rY-O8T">
<rect key="frame" x="66.333333333333371" y="12.666666666666664" width="45" height="45"/>
<constraints>
<constraint firstAttribute="height" constant="45" id="MyX-to-3tp"/>
<constraint firstAttribute="width" constant="45" id="mKt-rL-jxv"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="22.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_real_love_third_header" translatesAutoresizingMaskIntoConstraints="NO" id="ldL-jE-OCW">
<rect key="frame" x="8.3333333333333712" y="0.0" width="110" height="70"/>
<constraints>
<constraint firstAttribute="width" constant="110" id="ABy-co-Dux"/>
<constraint firstAttribute="height" constant="70" id="f9k-Tq-EBl"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TOP 3" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pyq-Of-sab">
<rect key="frame" x="0.0" y="75" width="126.66666666666667" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="rKG-1s-DvO"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="heavy" pointSize="17"/>
<color key="textColor" red="0.89019607840000003" green="0.56475246349999997" blue="0.27059417520000001" alpha="1" colorSpace="calibratedRGB"/>
<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="LeW-ad-gVJ">
<rect key="frame" x="0.0" y="102" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<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="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pwN-H0-3qj">
<rect key="frame" x="0.0" y="122" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_real_love_value_bg" translatesAutoresizingMaskIntoConstraints="NO" id="yOy-fE-ehe">
<rect key="frame" x="21" y="150" width="85" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="85" id="8zE-Ah-uVf"/>
<constraint firstAttribute="height" constant="20" id="val-a1-2fa"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6bp-EP-4mI">
<rect key="frame" x="41" y="149.66666666666666" width="60" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="KAx-jQ-OIw"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstAttribute="bottom" secondItem="Nxb-5v-S7f" secondAttribute="bottom" constant="10" id="1KP-S0-L4F"/>
<constraint firstItem="pyq-Of-sab" firstAttribute="leading" secondItem="Nxb-5v-S7f" secondAttribute="leading" id="484-d3-FPb"/>
<constraint firstItem="oRz-z8-zG5" firstAttribute="centerY" secondItem="ldL-jE-OCW" secondAttribute="centerY" id="4vl-6S-cPy"/>
<constraint firstItem="pwN-H0-3qj" firstAttribute="top" secondItem="LeW-ad-gVJ" secondAttribute="bottom" constant="3" id="7q3-5c-5vz"/>
<constraint firstItem="jh5-rY-O8T" firstAttribute="centerY" secondItem="ldL-jE-OCW" secondAttribute="centerY" id="9JG-sK-Gp2"/>
<constraint firstItem="pyq-Of-sab" firstAttribute="top" secondItem="ldL-jE-OCW" secondAttribute="bottom" constant="5" id="DNp-zR-glt"/>
<constraint firstItem="jh5-rY-O8T" firstAttribute="trailing" secondItem="ldL-jE-OCW" secondAttribute="trailing" constant="-7" id="EOt-kV-qy1"/>
<constraint firstAttribute="height" constant="190" id="GGW-5y-iuq"/>
<constraint firstItem="yOy-fE-ehe" firstAttribute="bottom" secondItem="Nxb-5v-S7f" secondAttribute="bottom" constant="-10" id="MLx-IV-G4l"/>
<constraint firstItem="6bp-EP-4mI" firstAttribute="leading" secondItem="yOy-fE-ehe" secondAttribute="leading" constant="20" id="PU3-oT-9KE"/>
<constraint firstItem="pyq-Of-sab" firstAttribute="trailing" secondItem="Nxb-5v-S7f" secondAttribute="trailing" id="R0k-da-muF"/>
<constraint firstItem="LeW-ad-gVJ" firstAttribute="top" secondItem="pyq-Of-sab" secondAttribute="bottom" constant="2" id="SFL-YD-CpX"/>
<constraint firstItem="pwN-H0-3qj" firstAttribute="leading" secondItem="Nxb-5v-S7f" secondAttribute="leading" id="U1I-lz-flo"/>
<constraint firstItem="oRz-z8-zG5" firstAttribute="leading" secondItem="ldL-jE-OCW" secondAttribute="leading" constant="7" id="cyQ-pI-l0S"/>
<constraint firstItem="yOy-fE-ehe" firstAttribute="centerX" secondItem="Nxb-5v-S7f" secondAttribute="centerX" id="hmo-Bu-sHj"/>
<constraint firstItem="6bp-EP-4mI" firstAttribute="centerY" secondItem="yOy-fE-ehe" secondAttribute="centerY" id="hsN-tf-ucA"/>
<constraint firstAttribute="trailing" secondItem="Nxb-5v-S7f" secondAttribute="trailing" id="jtd-FL-IPM"/>
<constraint firstItem="Nxb-5v-S7f" firstAttribute="leading" secondItem="W20-Fx-QTq" secondAttribute="leading" id="mH0-V2-F3V"/>
<constraint firstItem="LeW-ad-gVJ" firstAttribute="trailing" secondItem="Nxb-5v-S7f" secondAttribute="trailing" id="mxp-8w-d3f"/>
<constraint firstItem="pwN-H0-3qj" firstAttribute="trailing" secondItem="Nxb-5v-S7f" secondAttribute="trailing" id="uIJ-vM-5eW"/>
<constraint firstItem="LeW-ad-gVJ" firstAttribute="leading" secondItem="Nxb-5v-S7f" secondAttribute="leading" id="yUf-WR-TSj"/>
<constraint firstItem="6bp-EP-4mI" firstAttribute="trailing" secondItem="yOy-fE-ehe" secondAttribute="trailing" constant="-5" id="zC7-5f-4x4"/>
<constraint firstItem="ldL-jE-OCW" firstAttribute="centerX" secondItem="Nxb-5v-S7f" secondAttribute="centerX" id="zTv-YA-C7R"/>
<constraint firstItem="ldL-jE-OCW" firstAttribute="top" secondItem="Nxb-5v-S7f" secondAttribute="top" constant="-30" id="zcc-er-wj1"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="W20-Fx-QTq" firstAttribute="leading" secondItem="9kQ-2p-WMi" secondAttribute="trailing" constant="13" id="7zU-5T-Tpm"/>
<constraint firstItem="W20-Fx-QTq" firstAttribute="top" secondItem="9kQ-2p-WMi" secondAttribute="top" constant="20" id="8su-Hz-Uh8"/>
<constraint firstAttribute="trailing" secondItem="W20-Fx-QTq" secondAttribute="trailing" constant="16" id="9Pb-9f-b52"/>
<constraint firstItem="W20-Fx-QTq" firstAttribute="width" secondItem="fkt-5i-wGo" secondAttribute="width" id="9oW-f3-lh3"/>
<constraint firstItem="9kQ-2p-WMi" firstAttribute="leading" secondItem="fkt-5i-wGo" secondAttribute="trailing" constant="13" id="VDO-dN-V30"/>
<constraint firstItem="fkt-5i-wGo" firstAttribute="leading" secondItem="WH3-Kj-tPl" secondAttribute="leading" constant="16" id="e9c-ou-ab3"/>
<constraint firstItem="fkt-5i-wGo" firstAttribute="top" secondItem="9kQ-2p-WMi" secondAttribute="top" constant="20" id="fLC-0l-VdH"/>
<constraint firstItem="9kQ-2p-WMi" firstAttribute="width" secondItem="fkt-5i-wGo" secondAttribute="width" id="wAU-pa-Nj6"/>
<constraint firstItem="9kQ-2p-WMi" firstAttribute="top" secondItem="WH3-Kj-tPl" secondAttribute="top" constant="10" id="wfM-ih-liC"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="firstHeaderImage" destination="aGF-cs-ovJ" id="rwA-vJ-tQq"/>
<outlet property="firstHeaderImage2" destination="hOp-Tb-y2w" id="Gnw-Vq-Qtz"/>
<outlet property="firstIDLabel" destination="Is5-JJ-W6T" id="yC1-py-IEI"/>
<outlet property="firstNameLabel" destination="Tww-5a-ZSt" id="29c-NC-Cmm"/>
<outlet property="firstRankValueLabel" destination="Z7f-CG-uOk" id="rwb-av-cyP"/>
<outlet property="secondHeaderImage" destination="TYB-N3-5Cs" id="Qge-D4-mRr"/>
<outlet property="secondHeaderImage2" destination="Uue-tQ-gRt" id="BR3-WD-ipi"/>
<outlet property="secondIDLabel" destination="JgV-Ob-RU0" id="pMQ-4f-Eah"/>
<outlet property="secondNameLabel" destination="ckM-s4-iVh" id="Pzl-HS-g11"/>
<outlet property="secondRankValueLabel" destination="hGy-Aa-hUg" id="y6S-Ir-dE9"/>
<outlet property="thirdHeaderImage" destination="oRz-z8-zG5" id="fLv-y2-SGF"/>
<outlet property="thirdHeaderImage2" destination="jh5-rY-O8T" id="aLk-Sw-tny"/>
<outlet property="thirdIDLabel" destination="pwN-H0-3qj" id="Atn-0u-qI3"/>
<outlet property="thirdNameLabel" destination="LeW-ad-gVJ" id="uFh-Id-F4W"/>
<outlet property="thirdRankValueLabel" destination="6bp-EP-4mI" id="JHY-iH-k0p"/>
</connections>
<point key="canvasLocation" x="225.95419847328245" y="117.25352112676057"/>
</view>
</objects>
<resources>
<image name="rank_first_bg" width="110" height="124"/>
<image name="rank_real_love_first_header" width="108" height="65"/>
<image name="rank_real_love_second_header" width="95" height="60"/>
<image name="rank_real_love_third_header" width="95" height="60"/>
<image name="rank_real_love_value_bg" width="85" height="18"/>
<image name="rank_second_bg" width="103" height="116"/>
<image name="rank_third_bg" width="103" height="116"/>
<image name="user_header_placehoulder" width="40" height="40"/>
</resources>
</document>

View File

@@ -0,0 +1,25 @@
//
// QXRankListCell.h
// IsLandVoice
//
// Created by 启星 on 2025/3/4.
//
#import <UIKit/UIKit.h>
#import "QXRankModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXRankListCell : UITableViewCell
@property (weak, nonatomic) IBOutlet UILabel *numberLabel;
@property (weak, nonatomic) IBOutlet UIImageView *headerImageView;
@property (weak, nonatomic) IBOutlet UILabel *valueLabel;
@property (weak, nonatomic) IBOutlet UILabel *nameLabel;
@property (nonatomic,strong)QXMyRankModel *model;
/// 1 魅力 2 财富 3 房间 4 cp
@property (nonatomic,assign)NSInteger rankType;
+(instancetype)cellWithTableView:(UITableView*)tableView;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,48 @@
//
// QXRankListCell.m
// IsLandVoice
//
// Created by on 2025/3/4.
//
#import "QXRankListCell.h"
@implementation QXRankListCell
+(instancetype)cellWithTableView:(UITableView *)tableView{
static NSString *cellId = @"QXRankListCell";
QXRankListCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
if (!cell) {
cell = [[NSBundle mainBundle] loadNibNamed:cellId owner:nil options:nil].lastObject;
}
return cell;
}
-(void)setRankType:(NSInteger)rankType{
_rankType = rankType;
}
-(void)setModel:(QXMyRankModel *)model{
_model = model;
if (self.rankType == 0) {
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:model.room_cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.nameLabel.text = model.room_name;
self.valueLabel.text = [NSString qx_showHotCountNum:model.total.longLongValue];
self.numberLabel.text = model.rank;
}else{
[self.headerImageView sd_setImageWithURL:[NSURL URLWithString:model.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.nameLabel.text = model.nickname;
self.valueLabel.text = [NSString qx_showHotCountNum:model.total.longLongValue];
self.numberLabel.text = model.rank;
}
}
- (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

View File

@@ -0,0 +1,92 @@
<?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>
<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="97" id="KGk-i7-Jjw" customClass="QXRankListCell">
<rect key="frame" x="0.0" y="0.0" width="454" height="97"/>
<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="454" height="97"/>
<autoresizingMask key="autoresizingMask"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A6u-gx-qxe">
<rect key="frame" x="15" y="40" width="30" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="nSB-ak-zSd"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="HlF-Pn-DKh">
<rect key="frame" x="55" y="33.666666666666664" width="30" height="30"/>
<constraints>
<constraint firstAttribute="width" constant="30" id="T1y-jn-Err"/>
<constraint firstAttribute="height" constant="30" id="U9j-xw-QBf"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<integer key="value" value="15"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fzl-QL-ad0">
<rect key="frame" x="101" y="40" width="244" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<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="33" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M4J-MV-C6I">
<rect key="frame" x="383" y="40" width="55" height="17"/>
<constraints>
<constraint firstAttribute="width" constant="55" id="Y5D-hq-2Hl"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Vector" translatesAutoresizingMaskIntoConstraints="NO" id="6vu-N8-8uU">
<rect key="frame" x="355" y="38.666666666666664" width="20" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="20" id="RPP-W2-uG7"/>
<constraint firstAttribute="height" constant="20" id="cIl-7y-QqE"/>
</constraints>
</imageView>
</subviews>
<constraints>
<constraint firstItem="M4J-MV-C6I" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="3y8-eP-534"/>
<constraint firstItem="fzl-QL-ad0" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="6qM-F0-kaU"/>
<constraint firstItem="A6u-gx-qxe" firstAttribute="leading" secondItem="H2p-sc-9uM" secondAttribute="leading" constant="15" id="KTD-SJ-b98"/>
<constraint firstItem="fzl-QL-ad0" firstAttribute="leading" secondItem="HlF-Pn-DKh" secondAttribute="trailing" constant="16" id="KTy-bw-0M9"/>
<constraint firstItem="6vu-N8-8uU" firstAttribute="leading" secondItem="fzl-QL-ad0" secondAttribute="trailing" constant="10" id="KfJ-GU-xhc"/>
<constraint firstItem="HlF-Pn-DKh" firstAttribute="leading" secondItem="A6u-gx-qxe" secondAttribute="trailing" constant="10" id="QEi-Df-wpG"/>
<constraint firstItem="HlF-Pn-DKh" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="UMC-XC-UHT"/>
<constraint firstItem="6vu-N8-8uU" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="Wg4-GR-Vo4"/>
<constraint firstAttribute="trailing" secondItem="M4J-MV-C6I" secondAttribute="trailing" constant="16" id="ZD2-V9-W5N"/>
<constraint firstItem="A6u-gx-qxe" firstAttribute="centerY" secondItem="H2p-sc-9uM" secondAttribute="centerY" id="hee-RR-oRt"/>
<constraint firstItem="M4J-MV-C6I" firstAttribute="leading" secondItem="6vu-N8-8uU" secondAttribute="trailing" constant="8" symbolic="YES" id="uhf-Kz-A7s"/>
</constraints>
</tableViewCellContentView>
<viewLayoutGuide key="safeArea" id="aW0-zy-SZf"/>
<connections>
<outlet property="headerImageView" destination="HlF-Pn-DKh" id="qlM-wa-hJv"/>
<outlet property="nameLabel" destination="fzl-QL-ad0" id="LiE-Uw-T5s"/>
<outlet property="numberLabel" destination="A6u-gx-qxe" id="OYi-lV-qcy"/>
<outlet property="valueLabel" destination="M4J-MV-C6I" id="fap-Ij-TGd"/>
</connections>
<point key="canvasLocation" x="241.22137404580153" y="38.380281690140848"/>
</tableViewCell>
</objects>
<resources>
<image name="Vector" width="14" height="14"/>
<image name="user_header_placehoulder" width="128" height="128"/>
</resources>
</document>

View File

@@ -0,0 +1,37 @@
//
// QXRankTopThreeView.h
// IsLandVoice
//
// Created by 启星 on 2025/3/4.
//
#import <UIKit/UIKit.h>
#import "QXRankModel.h"
NS_ASSUME_NONNULL_BEGIN
@interface QXRankTopThreeView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *firstHeaderImage;
@property (weak, nonatomic) IBOutlet UILabel *firstNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *firstIDLabel;
@property (weak, nonatomic) IBOutlet UILabel *firstRankValueLabel;
@property (weak, nonatomic) IBOutlet UIImageView *secondHeaderImage;
@property (weak, nonatomic) IBOutlet UILabel *secondNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *secondIDLabel;
@property (weak, nonatomic) IBOutlet UILabel *secondRankValueLabel;
@property (weak, nonatomic) IBOutlet UIImageView *thirdHeaderImage;
@property (weak, nonatomic) IBOutlet UILabel *thirdNameLabel;
@property (weak, nonatomic) IBOutlet UILabel *thirdIDLabel;
@property (weak, nonatomic) IBOutlet UILabel *thirdRankValueLabel;
@property (nonatomic,strong)NSArray<QXMyRankModel*>*list;
//
@property (nonatomic,strong)NSArray<QXMyRankModel*>*roomList;
@property (nonatomic,strong)NSArray<QXMyRankModel*>*guildList;
-(void)resetView;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,159 @@
//
// QXRankTopThreeView.m
// IsLandVoice
//
// Created by on 2025/3/4.
//
#import "QXRankTopThreeView.h"
@implementation QXRankTopThreeView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self = [[[NSBundle mainBundle]loadNibNamed:@"QXRankTopThreeView" owner:nil options:nil] lastObject];
self.frame = frame;
}
return self;
}
-(void)setList:(NSArray<QXMyRankModel *> *)list{
_list = list;
QXMyRankModel *firstModel;
QXMyRankModel *secondModel;
QXMyRankModel *thirdModel;
if (list.count >= 3) {
firstModel = list[0];
secondModel = list[1];
thirdModel = list[2];
}
if (list.count == 2) {
firstModel = list[0];
secondModel = list[1];
}
if (list.count == 1) {
firstModel = list[0];
}
if (firstModel) {
[self.firstHeaderImage sd_setImageWithURL:[NSURL URLWithString:firstModel.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.firstNameLabel.text = firstModel.nickname;
self.firstIDLabel.text = [NSString stringWithFormat:@"ID:%@",firstModel.user_code];
self.firstRankValueLabel.text = [NSString qx_showHotCountNum:firstModel.total.longLongValue];
self.firstRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
if (secondModel) {
[self.secondHeaderImage sd_setImageWithURL:[NSURL URLWithString:secondModel.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.secondNameLabel.text = secondModel.nickname;
self.secondIDLabel.text = [NSString stringWithFormat:@"ID:%@",secondModel.user_code];
self.secondRankValueLabel.text = [NSString qx_showHotCountNum:secondModel.total.longLongValue];
self.secondRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
if (thirdModel) {
[self.thirdHeaderImage sd_setImageWithURL:[NSURL URLWithString:thirdModel.avatar] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.thirdNameLabel.text = thirdModel.nickname;
self.thirdIDLabel.text = [NSString stringWithFormat:@"ID:%@",thirdModel.user_code];
self.thirdRankValueLabel.text = [NSString qx_showHotCountNum:thirdModel.total.longLongValue];
self.thirdRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
}
-(void)resetView{
self.firstHeaderImage.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.secondHeaderImage.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.thirdHeaderImage.image = [UIImage imageNamed:@"user_header_placehoulder"];
self.firstNameLabel.text = @"虚位以待";
self.secondNameLabel.text = @"虚位以待";
self.thirdNameLabel.text = @"虚位以待";
self.firstIDLabel.text = @"ID:";
self.secondIDLabel.text = @"ID:";
self.thirdIDLabel.text = @"ID:";
}
//
-(void)setRoomList:(NSArray<QXMyRankModel *> *)roomList{
_roomList = roomList;
QXMyRankModel *firstModel;
QXMyRankModel *secondModel;
QXMyRankModel *thirdModel;
if (roomList.count >= 3) {
firstModel = roomList[0];
secondModel = roomList[1];
thirdModel = roomList[2];
}
if (roomList.count == 2) {
firstModel = roomList[0];
secondModel = roomList[1];
}
if (roomList.count == 1) {
firstModel = roomList[0];
}
if (firstModel) {
[self.firstHeaderImage sd_setImageWithURL:[NSURL URLWithString:firstModel.room_cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.firstNameLabel.text = firstModel.room_name;
self.firstIDLabel.text = [NSString stringWithFormat:@"ID:%@",firstModel.room_number];
self.firstRankValueLabel.text = [NSString qx_showHotCountNum:firstModel.total.longLongValue];
self.firstRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
if (secondModel) {
[self.secondHeaderImage sd_setImageWithURL:[NSURL URLWithString:secondModel.room_cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.secondNameLabel.text = secondModel.room_name;
self.secondIDLabel.text = [NSString stringWithFormat:@"ID:%@",secondModel.room_number];
self.secondRankValueLabel.text = [NSString qx_showHotCountNum:secondModel.total.longLongValue];
self.secondRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
if (thirdModel) {
[self.thirdHeaderImage sd_setImageWithURL:[NSURL URLWithString:thirdModel.room_cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.thirdNameLabel.text = thirdModel.room_name;
self.thirdIDLabel.text = [NSString stringWithFormat:@"ID:%@",thirdModel.room_number];
self.thirdRankValueLabel.text = [NSString qx_showHotCountNum:thirdModel.total.longLongValue];
self.thirdRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
}
-(void)setGuildList:(NSArray<QXMyRankModel *> *)guildList{
_guildList = guildList;
QXMyRankModel *firstModel;
QXMyRankModel *secondModel;
QXMyRankModel *thirdModel;
if (guildList.count >= 3) {
firstModel = guildList[0];
secondModel = guildList[1];
thirdModel = guildList[2];
}
if (guildList.count == 2) {
firstModel = guildList[0];
secondModel = guildList[1];
}
if (guildList.count == 1) {
firstModel = guildList[0];
}
if (firstModel) {
[self.firstHeaderImage sd_setImageWithURL:[NSURL URLWithString:firstModel.cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.firstNameLabel.text = firstModel.guild_name;
self.firstIDLabel.text = [NSString stringWithFormat:@"ID:%@",firstModel.guild_special_id];
self.firstRankValueLabel.text = [NSString qx_showHotCountNum:firstModel.total.longLongValue];
self.firstRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
if (secondModel) {
[self.secondHeaderImage sd_setImageWithURL:[NSURL URLWithString:secondModel.cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.secondNameLabel.text = secondModel.guild_name;
self.secondIDLabel.text = [NSString stringWithFormat:@"ID:%@",secondModel.guild_special_id];
self.secondRankValueLabel.text = [NSString qx_showHotCountNum:secondModel.total.longLongValue];
self.secondRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
if (thirdModel) {
[self.thirdHeaderImage sd_setImageWithURL:[NSURL URLWithString:thirdModel.cover] placeholderImage:[UIImage imageNamed:@"user_header_placehoulder"]];
self.thirdNameLabel.text = thirdModel.guild_name;
self.thirdIDLabel.text = [NSString stringWithFormat:@"ID:%@",thirdModel.guild_special_id];
self.thirdRankValueLabel.text = [NSString qx_showHotCountNum:thirdModel.total.longLongValue];
self.thirdRankValueLabel.adjustsFontSizeToFitWidth = YES;
}
}
@end

View File

@@ -0,0 +1,332 @@
<?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" colorMatched="YES">
<device id="retina6_12" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
<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="QXRankTopThreeView">
<rect key="frame" x="0.0" y="0.0" width="438" height="230"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="XUB-Y8-XcZ">
<rect key="frame" x="16.000000000000007" y="30" width="126.66666666666669" height="190"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_first_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Udd-CZ-76S">
<rect key="frame" x="0.0" y="30" width="126.66666666666667" height="150"/>
<constraints>
<constraint firstAttribute="height" constant="150" id="OpL-6e-PQF"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="yUs-Y6-slK">
<rect key="frame" x="36" y="10" width="55" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="6eF-8z-4xj"/>
<constraint firstAttribute="width" constant="55" id="V64-MD-1q7"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="27.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_second_header" translatesAutoresizingMaskIntoConstraints="NO" id="AvX-gb-Qj2">
<rect key="frame" x="28.333333333333336" y="2.6666666666666643" width="70" height="70"/>
<constraints>
<constraint firstAttribute="height" constant="70" id="etW-86-HWO"/>
<constraint firstAttribute="width" constant="70" id="yuf-mK-GWS"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TOP 2" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hrW-iv-2GA">
<rect key="frame" x="0.0" y="77.666666666666671" width="126.66666666666667" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="ePo-8S-kGh"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="heavy" pointSize="17"/>
<color key="textColor" red="0.27058823529411763" green="0.52549019607843139" blue="0.8666666666666667" alpha="1" colorSpace="calibratedRGB"/>
<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="1cb-gO-110">
<rect key="frame" x="0.0" y="104.66666666666666" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<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="ID:" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YVj-S5-pMv">
<rect key="frame" x="0.0" y="124.66666666666666" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_value_bg" translatesAutoresizingMaskIntoConstraints="NO" id="cNU-er-wVt">
<rect key="frame" x="21" y="150" width="85" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="85" id="a6v-Ha-yCN"/>
<constraint firstAttribute="height" constant="20" id="qrO-iJ-Ran"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="N38-n0-ZM2">
<rect key="frame" x="41" y="149.66666666666666" width="60" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="DWS-UI-7S3"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="cNU-er-wVt" firstAttribute="centerX" secondItem="Udd-CZ-76S" secondAttribute="centerX" id="0ZC-eg-UcP"/>
<constraint firstItem="yUs-Y6-slK" firstAttribute="centerX" secondItem="Udd-CZ-76S" secondAttribute="centerX" id="3zb-ps-32a"/>
<constraint firstAttribute="trailing" secondItem="Udd-CZ-76S" secondAttribute="trailing" id="5Xc-AW-dq0"/>
<constraint firstItem="cNU-er-wVt" firstAttribute="bottom" secondItem="Udd-CZ-76S" secondAttribute="bottom" constant="-10" id="8Jy-xb-M2A"/>
<constraint firstItem="1cb-gO-110" firstAttribute="leading" secondItem="Udd-CZ-76S" secondAttribute="leading" id="GzX-Vy-k5H"/>
<constraint firstItem="hrW-iv-2GA" firstAttribute="top" secondItem="AvX-gb-Qj2" secondAttribute="bottom" constant="5" id="JdB-Mt-Ubh"/>
<constraint firstAttribute="height" constant="190" id="Jfy-QF-AUp"/>
<constraint firstItem="1cb-gO-110" firstAttribute="top" secondItem="hrW-iv-2GA" secondAttribute="bottom" constant="2" id="Mid-SH-KMl"/>
<constraint firstItem="YVj-S5-pMv" firstAttribute="trailing" secondItem="Udd-CZ-76S" secondAttribute="trailing" id="QYa-aT-fWw"/>
<constraint firstAttribute="bottom" secondItem="Udd-CZ-76S" secondAttribute="bottom" constant="10" id="asr-zA-QjP"/>
<constraint firstItem="hrW-iv-2GA" firstAttribute="trailing" secondItem="Udd-CZ-76S" secondAttribute="trailing" id="f00-XJ-SYT"/>
<constraint firstItem="hrW-iv-2GA" firstAttribute="leading" secondItem="Udd-CZ-76S" secondAttribute="leading" id="gMf-cA-GyC"/>
<constraint firstItem="YVj-S5-pMv" firstAttribute="leading" secondItem="Udd-CZ-76S" secondAttribute="leading" id="iuR-XR-by4"/>
<constraint firstItem="AvX-gb-Qj2" firstAttribute="centerY" secondItem="yUs-Y6-slK" secondAttribute="centerY" id="o0C-7g-FaY"/>
<constraint firstItem="N38-n0-ZM2" firstAttribute="centerY" secondItem="cNU-er-wVt" secondAttribute="centerY" id="qgC-JE-VoE"/>
<constraint firstItem="YVj-S5-pMv" firstAttribute="top" secondItem="1cb-gO-110" secondAttribute="bottom" constant="3" id="rue-Mh-n41"/>
<constraint firstItem="Udd-CZ-76S" firstAttribute="leading" secondItem="XUB-Y8-XcZ" secondAttribute="leading" id="t53-rK-r8p"/>
<constraint firstItem="N38-n0-ZM2" firstAttribute="leading" secondItem="cNU-er-wVt" secondAttribute="leading" constant="20" id="tvs-gN-vfv"/>
<constraint firstItem="yUs-Y6-slK" firstAttribute="top" secondItem="Udd-CZ-76S" secondAttribute="top" constant="-20" id="wlR-gY-AfB"/>
<constraint firstItem="1cb-gO-110" firstAttribute="trailing" secondItem="Udd-CZ-76S" secondAttribute="trailing" id="wqs-cd-axN"/>
<constraint firstItem="N38-n0-ZM2" firstAttribute="trailing" secondItem="cNU-er-wVt" secondAttribute="trailing" constant="-5" id="wtQ-ub-w9L"/>
<constraint firstItem="AvX-gb-Qj2" firstAttribute="centerX" secondItem="yUs-Y6-slK" secondAttribute="centerX" id="yWU-0M-37q"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YTz-cQ-cnc">
<rect key="frame" x="155.66666666666666" y="10" width="126.66666666666666" height="190"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_second_bg" translatesAutoresizingMaskIntoConstraints="NO" id="OYC-81-j70">
<rect key="frame" x="0.0" y="30" width="126.66666666666667" height="150"/>
<constraints>
<constraint firstAttribute="height" constant="150" id="20d-Os-Gh8"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="Qla-Q4-61p">
<rect key="frame" x="36" y="10" width="55" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="dF6-xJ-QPU"/>
<constraint firstAttribute="width" constant="55" id="y73-KC-MmY"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="27.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_first_header" translatesAutoresizingMaskIntoConstraints="NO" id="b5j-h9-fHj">
<rect key="frame" x="28.333333333333343" y="2.6666666666666643" width="70" height="70"/>
<constraints>
<constraint firstAttribute="height" constant="70" id="RPj-PA-Yue"/>
<constraint firstAttribute="width" constant="70" id="UEq-Yf-IPd"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TOP 1" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yag-FZ-Hxd">
<rect key="frame" x="0.0" y="77.666666666666671" width="126.66666666666667" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="4w5-Rv-dCA"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="heavy" pointSize="17"/>
<color key="textColor" red="0.84313725490196079" green="0.30196078431372547" blue="0.17254901960784313" alpha="1" colorSpace="calibratedRGB"/>
<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="ZoJ-2X-OhT">
<rect key="frame" x="0.0" y="104.66666666666667" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<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="ID:" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="y6v-rD-4Gf">
<rect key="frame" x="0.0" y="124.66666666666666" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_value_bg" translatesAutoresizingMaskIntoConstraints="NO" id="AP3-Al-g1n">
<rect key="frame" x="21" y="150" width="85" height="20"/>
<constraints>
<constraint firstAttribute="width" constant="85" id="94n-mT-9iE"/>
<constraint firstAttribute="height" constant="20" id="QgK-xn-ORo"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UPu-Oc-Pap">
<rect key="frame" x="41" y="149.66666666666666" width="60" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="oZt-bc-coz"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="y6v-rD-4Gf" firstAttribute="trailing" secondItem="OYC-81-j70" secondAttribute="trailing" id="38A-WK-w2o"/>
<constraint firstItem="Yag-FZ-Hxd" firstAttribute="trailing" secondItem="OYC-81-j70" secondAttribute="trailing" id="3vs-tP-yFe"/>
<constraint firstItem="y6v-rD-4Gf" firstAttribute="leading" secondItem="OYC-81-j70" secondAttribute="leading" id="5i5-yN-jA7"/>
<constraint firstItem="y6v-rD-4Gf" firstAttribute="top" secondItem="ZoJ-2X-OhT" secondAttribute="bottom" constant="3" id="8Qo-tE-ZQB"/>
<constraint firstItem="UPu-Oc-Pap" firstAttribute="centerY" secondItem="AP3-Al-g1n" secondAttribute="centerY" id="DwW-Xy-41n"/>
<constraint firstItem="UPu-Oc-Pap" firstAttribute="leading" secondItem="AP3-Al-g1n" secondAttribute="leading" constant="20" id="EEW-9Y-c6k"/>
<constraint firstItem="ZoJ-2X-OhT" firstAttribute="leading" secondItem="OYC-81-j70" secondAttribute="leading" id="FoV-c3-OQp"/>
<constraint firstItem="Qla-Q4-61p" firstAttribute="centerX" secondItem="OYC-81-j70" secondAttribute="centerX" id="GlL-b6-uM4"/>
<constraint firstItem="AP3-Al-g1n" firstAttribute="centerX" secondItem="OYC-81-j70" secondAttribute="centerX" id="Yrt-Wy-qFX"/>
<constraint firstItem="Yag-FZ-Hxd" firstAttribute="leading" secondItem="OYC-81-j70" secondAttribute="leading" id="asH-Gs-kM0"/>
<constraint firstItem="Yag-FZ-Hxd" firstAttribute="top" secondItem="b5j-h9-fHj" secondAttribute="bottom" constant="5" id="cNy-cu-FRK"/>
<constraint firstItem="Qla-Q4-61p" firstAttribute="top" secondItem="OYC-81-j70" secondAttribute="top" constant="-20" id="d8L-tR-zrX"/>
<constraint firstItem="UPu-Oc-Pap" firstAttribute="trailing" secondItem="AP3-Al-g1n" secondAttribute="trailing" constant="-5" id="gLB-Qa-3yB"/>
<constraint firstItem="ZoJ-2X-OhT" firstAttribute="top" secondItem="Yag-FZ-Hxd" secondAttribute="bottom" constant="2" id="hkT-40-gxD"/>
<constraint firstItem="b5j-h9-fHj" firstAttribute="centerX" secondItem="Qla-Q4-61p" secondAttribute="centerX" id="qeS-Ko-x2k"/>
<constraint firstAttribute="bottom" secondItem="OYC-81-j70" secondAttribute="bottom" constant="10" id="qra-jQ-HuG"/>
<constraint firstItem="OYC-81-j70" firstAttribute="leading" secondItem="YTz-cQ-cnc" secondAttribute="leading" id="ui1-rt-TLL"/>
<constraint firstItem="b5j-h9-fHj" firstAttribute="centerY" secondItem="Qla-Q4-61p" secondAttribute="centerY" id="wE7-kT-0cA"/>
<constraint firstItem="ZoJ-2X-OhT" firstAttribute="trailing" secondItem="OYC-81-j70" secondAttribute="trailing" id="xUJ-An-uJd"/>
<constraint firstItem="AP3-Al-g1n" firstAttribute="bottom" secondItem="OYC-81-j70" secondAttribute="bottom" constant="-10" id="yJS-5l-52b"/>
<constraint firstAttribute="height" constant="190" id="ymO-VJ-qeF"/>
<constraint firstAttribute="trailing" secondItem="OYC-81-j70" secondAttribute="trailing" id="zi1-Z3-Vdu"/>
</constraints>
</view>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="v5g-yt-Tiv">
<rect key="frame" x="295.33333333333331" y="30" width="126.66666666666669" height="190"/>
<subviews>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_third_bg" translatesAutoresizingMaskIntoConstraints="NO" id="bAp-HV-Zc7">
<rect key="frame" x="0.0" y="30" width="126.66666666666667" height="150"/>
<constraints>
<constraint firstAttribute="height" constant="150" id="i6w-Yw-0XV"/>
</constraints>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="user_header_placehoulder" translatesAutoresizingMaskIntoConstraints="NO" id="Dt4-sc-cd4">
<rect key="frame" x="36" y="10" width="55" height="55"/>
<constraints>
<constraint firstAttribute="height" constant="55" id="Jnt-9u-oIl"/>
<constraint firstAttribute="width" constant="55" id="ZOy-UO-FXw"/>
</constraints>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
<real key="value" value="27.5"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</imageView>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_third_header" translatesAutoresizingMaskIntoConstraints="NO" id="O3B-Qw-b3G">
<rect key="frame" x="28.333333333333371" y="2.6666666666666643" width="70" height="70"/>
<constraints>
<constraint firstAttribute="width" constant="70" id="BXi-JR-Idl"/>
<constraint firstAttribute="height" constant="70" id="mHP-Gy-cuf"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TOP 3" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="FvS-gS-VUF">
<rect key="frame" x="0.0" y="74.666666666666671" width="126.66666666666667" height="25"/>
<constraints>
<constraint firstAttribute="height" constant="25" id="yHg-qN-S7S"/>
</constraints>
<fontDescription key="fontDescription" type="system" weight="heavy" pointSize="17"/>
<color key="textColor" red="0.8901960784313725" green="0.5647524634853941" blue="0.27059417517006801" alpha="1" colorSpace="calibratedRGB"/>
<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="zaf-sd-VhI">
<rect key="frame" x="0.0" y="101.66666666666666" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<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="ID:" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XSS-VJ-7Gi">
<rect key="frame" x="0.0" y="121.66666666666666" width="126.66666666666667" height="17"/>
<fontDescription key="fontDescription" type="system" pointSize="14"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="rank_value_bg" translatesAutoresizingMaskIntoConstraints="NO" id="xIs-Qs-ZUi">
<rect key="frame" x="21" y="150" width="85" height="20"/>
<constraints>
<constraint firstAttribute="height" constant="20" id="5CX-XP-Nzj"/>
<constraint firstAttribute="width" constant="85" id="Cwb-nd-chf"/>
</constraints>
</imageView>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7n9-wN-Uuy">
<rect key="frame" x="41" y="149.66666666666666" width="60" height="21"/>
<constraints>
<constraint firstAttribute="height" constant="21" id="8hr-2B-Svz"/>
</constraints>
<fontDescription key="fontDescription" type="system" pointSize="12"/>
<color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<constraints>
<constraint firstItem="FvS-gS-VUF" firstAttribute="leading" secondItem="bAp-HV-Zc7" secondAttribute="leading" id="0JF-KO-SFJ"/>
<constraint firstItem="bAp-HV-Zc7" firstAttribute="leading" secondItem="v5g-yt-Tiv" secondAttribute="leading" id="2h5-iQ-9oL"/>
<constraint firstItem="7n9-wN-Uuy" firstAttribute="centerY" secondItem="xIs-Qs-ZUi" secondAttribute="centerY" id="2lI-Rd-UDg"/>
<constraint firstItem="XSS-VJ-7Gi" firstAttribute="top" secondItem="zaf-sd-VhI" secondAttribute="bottom" constant="3" id="2lN-Re-eP4"/>
<constraint firstItem="O3B-Qw-b3G" firstAttribute="centerY" secondItem="Dt4-sc-cd4" secondAttribute="centerY" id="4wN-aC-Dp3"/>
<constraint firstAttribute="height" constant="190" id="59l-Xe-SZI"/>
<constraint firstItem="zaf-sd-VhI" firstAttribute="trailing" secondItem="bAp-HV-Zc7" secondAttribute="trailing" id="83l-Mo-KDX"/>
<constraint firstAttribute="bottom" secondItem="bAp-HV-Zc7" secondAttribute="bottom" constant="10" id="Bjo-RJ-N9Q"/>
<constraint firstItem="7n9-wN-Uuy" firstAttribute="trailing" secondItem="xIs-Qs-ZUi" secondAttribute="trailing" constant="-5" id="MIJ-zp-9TR"/>
<constraint firstItem="FvS-gS-VUF" firstAttribute="trailing" secondItem="bAp-HV-Zc7" secondAttribute="trailing" id="O6G-zi-LeN"/>
<constraint firstItem="Dt4-sc-cd4" firstAttribute="top" secondItem="bAp-HV-Zc7" secondAttribute="top" constant="-20" id="W6G-2n-pkC"/>
<constraint firstItem="Dt4-sc-cd4" firstAttribute="centerX" secondItem="bAp-HV-Zc7" secondAttribute="centerX" id="ZeF-xV-20d"/>
<constraint firstItem="XSS-VJ-7Gi" firstAttribute="trailing" secondItem="bAp-HV-Zc7" secondAttribute="trailing" id="e2C-Tu-0qj"/>
<constraint firstItem="zaf-sd-VhI" firstAttribute="top" secondItem="FvS-gS-VUF" secondAttribute="bottom" constant="2" id="g57-ez-75o"/>
<constraint firstItem="XSS-VJ-7Gi" firstAttribute="leading" secondItem="bAp-HV-Zc7" secondAttribute="leading" id="j2M-tH-Nkl"/>
<constraint firstItem="O3B-Qw-b3G" firstAttribute="centerX" secondItem="Dt4-sc-cd4" secondAttribute="centerX" id="jtI-yw-AVJ"/>
<constraint firstItem="xIs-Qs-ZUi" firstAttribute="bottom" secondItem="bAp-HV-Zc7" secondAttribute="bottom" constant="-10" id="n6f-YO-GEj"/>
<constraint firstItem="FvS-gS-VUF" firstAttribute="top" secondItem="O3B-Qw-b3G" secondAttribute="bottom" constant="2" id="pCS-8t-Sdh"/>
<constraint firstItem="zaf-sd-VhI" firstAttribute="leading" secondItem="bAp-HV-Zc7" secondAttribute="leading" id="u55-Sp-Gcu"/>
<constraint firstItem="7n9-wN-Uuy" firstAttribute="leading" secondItem="xIs-Qs-ZUi" secondAttribute="leading" constant="20" id="ucl-We-U9T"/>
<constraint firstAttribute="trailing" secondItem="bAp-HV-Zc7" secondAttribute="trailing" id="w0H-sm-R6j"/>
<constraint firstItem="xIs-Qs-ZUi" firstAttribute="centerX" secondItem="bAp-HV-Zc7" secondAttribute="centerX" id="x7Y-HY-I4W"/>
</constraints>
</view>
</subviews>
<constraints>
<constraint firstItem="v5g-yt-Tiv" firstAttribute="top" secondItem="YTz-cQ-cnc" secondAttribute="top" constant="20" id="0R3-r5-Wxd"/>
<constraint firstItem="XUB-Y8-XcZ" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="16" id="N3B-R1-7yD"/>
<constraint firstItem="XUB-Y8-XcZ" firstAttribute="top" secondItem="YTz-cQ-cnc" secondAttribute="top" constant="20" id="T7Y-QD-Rmk"/>
<constraint firstAttribute="trailing" secondItem="v5g-yt-Tiv" secondAttribute="trailing" constant="16" id="WVw-as-Mru"/>
<constraint firstItem="YTz-cQ-cnc" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" constant="10" id="Xam-R0-afY"/>
<constraint firstItem="YTz-cQ-cnc" firstAttribute="width" secondItem="XUB-Y8-XcZ" secondAttribute="width" id="bjS-d4-o6d"/>
<constraint firstItem="YTz-cQ-cnc" firstAttribute="leading" secondItem="XUB-Y8-XcZ" secondAttribute="trailing" constant="13" id="grr-dS-qvb"/>
<constraint firstItem="v5g-yt-Tiv" firstAttribute="width" secondItem="XUB-Y8-XcZ" secondAttribute="width" id="kyg-aW-8jU"/>
<constraint firstItem="v5g-yt-Tiv" firstAttribute="leading" secondItem="YTz-cQ-cnc" secondAttribute="trailing" constant="13" id="mho-CF-53Q"/>
</constraints>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<connections>
<outlet property="firstHeaderImage" destination="Qla-Q4-61p" id="9iw-tV-D9i"/>
<outlet property="firstIDLabel" destination="y6v-rD-4Gf" id="Zu5-7N-rE4"/>
<outlet property="firstNameLabel" destination="ZoJ-2X-OhT" id="RE2-pw-FkQ"/>
<outlet property="firstRankValueLabel" destination="UPu-Oc-Pap" id="bI7-rg-MwP"/>
<outlet property="secondHeaderImage" destination="yUs-Y6-slK" id="uyW-dP-THq"/>
<outlet property="secondIDLabel" destination="YVj-S5-pMv" id="hhc-qc-U1J"/>
<outlet property="secondNameLabel" destination="1cb-gO-110" id="kZA-l2-ULy"/>
<outlet property="secondRankValueLabel" destination="N38-n0-ZM2" id="58k-o4-2cZ"/>
<outlet property="thirdHeaderImage" destination="Dt4-sc-cd4" id="Xnp-w3-omi"/>
<outlet property="thirdIDLabel" destination="XSS-VJ-7Gi" id="Ion-fD-0im"/>
<outlet property="thirdNameLabel" destination="zaf-sd-VhI" id="i1e-MY-xKc"/>
<outlet property="thirdRankValueLabel" destination="7n9-wN-Uuy" id="JTa-ty-Wtk"/>
</connections>
<point key="canvasLocation" x="225.95419847328245" y="117.25352112676057"/>
</view>
</objects>
<resources>
<image name="rank_first_bg" width="110" height="124"/>
<image name="rank_first_header" width="64" height="64"/>
<image name="rank_second_bg" width="103" height="116"/>
<image name="rank_second_header" width="64" height="64"/>
<image name="rank_third_bg" width="103" height="116"/>
<image name="rank_third_header" width="64" height="64"/>
<image name="rank_value_bg" width="85" height="18"/>
<image name="user_header_placehoulder" width="40" height="40"/>
</resources>
</document>

View File

@@ -0,0 +1,23 @@
//
// QXRankTypeView.h
// IsLandVoice
//
// Created by 启星 on 2025/3/3.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger) {
QXRankTypeDay = 1,
QXRankTypeWeek = 2,
QXRankTypeMonth
}QXRankType;
@interface QXRankTypeView : UIView
@property (nonatomic,copy)void(^rankTypeBlock)(QXRankType type);
@end
@interface QXRankTypeButton : UIButton
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,118 @@
//
// QXRankTypeView.m
// IsLandVoice
//
// Created by on 2025/3/3.
//
#import "QXRankTypeView.h"
@interface QXRankTypeView()
@property (nonatomic,strong)QXRankTypeButton*dayBtn;
@property (nonatomic,strong)QXRankTypeButton*weekBtn;
@property (nonatomic,strong)QXRankTypeButton*monthBtn;
@property (nonatomic,strong)QXRankTypeButton*tmpBtn;
@end
@implementation QXRankTypeView
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self createViews];
}
return self;
}
-(void)createViews{
self.dayBtn.selected = YES;
[self addSubview:self.dayBtn];
[self addSubview:self.weekBtn];
[self addSubview:self.monthBtn];
self.tmpBtn = self.dayBtn;
CGFloat btnWidth = (SCREEN_WIDTH-64*2-16*2)/3.0;
[self.dayBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.mas_equalTo(64);
make.height.mas_equalTo(35);
make.width.mas_equalTo(btnWidth);
make.centerY.mas_equalTo(self);
}];
[self.weekBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.dayBtn.mas_right).offset(16);
make.height.mas_equalTo(35);
make.width.mas_equalTo(btnWidth);
make.centerY.mas_equalTo(self);
}];
[self.monthBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.weekBtn.mas_right).offset(16);
make.height.mas_equalTo(35);
make.width.mas_equalTo(btnWidth);
make.centerY.mas_equalTo(self);
}];
}
-(void)typeAction:(QXRankTypeButton*)button{
self.tmpBtn.selected = !self.tmpBtn.selected;
button.selected = !button.selected;
self.tmpBtn = button;
if (self.rankTypeBlock) {
self.rankTypeBlock(button.tag);
}
}
-(QXRankTypeButton *)dayBtn{
if (!_dayBtn) {
_dayBtn = [[QXRankTypeButton alloc] init];
[_dayBtn setTitle:@"日榜" forState:(UIControlStateNormal)];
[_dayBtn addTarget:self action:@selector(typeAction:) forControlEvents:(UIControlEventTouchUpInside)];
_dayBtn.layer.masksToBounds = YES;
_dayBtn.layer.cornerRadius = 17.5;
_dayBtn.tag = 1;
}
return _dayBtn;
}
-(QXRankTypeButton *)weekBtn{
if (!_weekBtn) {
_weekBtn = [[QXRankTypeButton alloc] init];
[_weekBtn setTitle:@"周榜" forState:(UIControlStateNormal)];
[_weekBtn addTarget:self action:@selector(typeAction:) forControlEvents:(UIControlEventTouchUpInside)];
_weekBtn.layer.masksToBounds = YES;
_weekBtn.layer.cornerRadius = 17.5;
_weekBtn.tag = 2;
}
return _weekBtn;
}
-(QXRankTypeButton *)monthBtn{
if (!_monthBtn) {
_monthBtn = [[QXRankTypeButton alloc] init];
[_monthBtn setTitle:@"月榜" forState:(UIControlStateNormal)];
[_monthBtn addTarget:self action:@selector(typeAction:) forControlEvents:(UIControlEventTouchUpInside)];
_monthBtn.layer.masksToBounds = YES;
_monthBtn.layer.cornerRadius = 17.5;
_monthBtn.tag = 3;
}
return _monthBtn;
}
@end
@implementation QXRankTypeButton
- (instancetype)init
{
self = [super init];
if (self) {
[self setTitleColor:QXConfig.btnTextColor forState:(UIControlStateNormal)];
self.titleLabel.font = [UIFont boldSystemFontOfSize:14];
self.backgroundColor = RGB16(0xF6F6F6);
}
return self;
}
-(void)setSelected:(BOOL)selected{
[super setSelected:selected];
if (selected) {
self.backgroundColor = QXConfig.themeColor ;
}else{
self.backgroundColor = RGB16(0xF6F6F6);
}
}
@end