增加换肤功能
This commit is contained in:
17
QXLive/Mine(音域)/View/充值/QXRechargePayTypeCell.h
Normal file
17
QXLive/Mine(音域)/View/充值/QXRechargePayTypeCell.h
Normal file
@@ -0,0 +1,17 @@
|
||||
//
|
||||
// QXRechargePayTypeCell.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXRechargePayTypeView.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXRechargePayTypeCell : UICollectionViewCell
|
||||
@property (nonatomic,strong)QXPayTypeModel *model;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
45
QXLive/Mine(音域)/View/充值/QXRechargePayTypeCell.m
Normal file
45
QXLive/Mine(音域)/View/充值/QXRechargePayTypeCell.m
Normal file
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// QXRechargePayTypeCell.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import "QXRechargePayTypeCell.h"
|
||||
#import "QXRechargePayTypeView.h"
|
||||
@interface QXRechargePayTypeCell()
|
||||
@property (nonatomic,strong)QXRechargePayTypeView *payTypeView;
|
||||
@end
|
||||
@implementation QXRechargePayTypeCell
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)setModel:(QXPayTypeModel *)model{
|
||||
_model = model;
|
||||
self.payTypeView.model = model;
|
||||
}
|
||||
-(void)initSubviews{
|
||||
self.payTypeView = [[QXRechargePayTypeView alloc] init];
|
||||
[self.contentView addSubview:self.payTypeView];
|
||||
[self.payTypeView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(16);
|
||||
make.right.mas_equalTo(-16);
|
||||
make.top.bottom.equalTo(self);
|
||||
}];
|
||||
}
|
||||
@end
|
||||
19
QXLive/Mine(音域)/View/充值/QXRechargePayTypeView.h
Normal file
19
QXLive/Mine(音域)/View/充值/QXRechargePayTypeView.h
Normal file
@@ -0,0 +1,19 @@
|
||||
//
|
||||
// QXRechargePayTypeView.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXPayTypeModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXRechargePayTypeView : UIView
|
||||
@property (nonatomic,strong)UIImageView *imageView;
|
||||
@property (nonatomic,strong)UILabel *titleLabel;
|
||||
@property (nonatomic,strong)UIButton *selectedBtn;
|
||||
@property (nonatomic,strong)QXPayTypeModel *model;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
60
QXLive/Mine(音域)/View/充值/QXRechargePayTypeView.m
Normal file
60
QXLive/Mine(音域)/View/充值/QXRechargePayTypeView.m
Normal file
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// QXRechargePayTypeView.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import "QXRechargePayTypeView.h"
|
||||
|
||||
@implementation QXRechargePayTypeView
|
||||
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)setModel:(QXPayTypeModel *)model{
|
||||
_model = model;
|
||||
if ([model.icon hasPrefix:@"http"]) {
|
||||
[self.imageView sd_setImageWithURL:[NSURL URLWithString:model.icon]];
|
||||
}else{
|
||||
self.imageView.image = [UIImage imageNamed:model.icon];
|
||||
}
|
||||
self.titleLabel.text = model.name;
|
||||
self.selectedBtn.selected = model.isSelected;
|
||||
}
|
||||
-(void)initSubviews{
|
||||
self.imageView = [[UIImageView alloc] init];
|
||||
self.imageView.contentMode = UIViewContentModeScaleAspectFill;
|
||||
[self addSubview:self.imageView];
|
||||
[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.centerY.equalTo(self);
|
||||
make.size.mas_equalTo(CGSizeMake(30, 30));
|
||||
}];
|
||||
|
||||
self.titleLabel = [[UILabel alloc] init];
|
||||
self.titleLabel.font = [UIFont systemFontOfSize:14];
|
||||
self.titleLabel.textColor = QXConfig.textColor;
|
||||
[self addSubview:self.titleLabel];
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self.imageView.mas_right).offset(8);
|
||||
make.top.bottom.equalTo(self);
|
||||
}];
|
||||
|
||||
self.selectedBtn = [[UIButton alloc] init];
|
||||
[self.selectedBtn setImage:[UIImage imageNamed:@"login_agreement_nor"] forState:(UIControlStateNormal)];
|
||||
[self.selectedBtn setImage:[UIImage imageNamed:@"login_agreement_sel"] forState:(UIControlStateSelected)];
|
||||
self.selectedBtn.userInteractionEnabled = NO;
|
||||
[self addSubview:self.selectedBtn];
|
||||
[self.selectedBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.equalTo(self).offset(-16);
|
||||
make.size.mas_equalTo(CGSizeMake(20, 20));
|
||||
make.centerY.equalTo(self);
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
22
QXLive/Mine(音域)/View/充值/QXRechargePriceCell.h
Normal file
22
QXLive/Mine(音域)/View/充值/QXRechargePriceCell.h
Normal file
@@ -0,0 +1,22 @@
|
||||
//
|
||||
// QXRechargePriceCell.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXRechargeListModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXRechargePriceCell : UICollectionViewCell
|
||||
@property (weak, nonatomic) IBOutlet UIView *bgView;
|
||||
@property (weak, nonatomic) IBOutlet UIButton *cornBtn;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *priceLabel;
|
||||
@property (weak, nonatomic) IBOutlet UILabel *customLabel;
|
||||
//@property (nonatomic,assign) BOOL isCustom;
|
||||
@property (nonatomic,strong) QXRechargeListModel *model;
|
||||
@end
|
||||
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
45
QXLive/Mine(音域)/View/充值/QXRechargePriceCell.m
Normal file
45
QXLive/Mine(音域)/View/充值/QXRechargePriceCell.m
Normal file
@@ -0,0 +1,45 @@
|
||||
//
|
||||
// QXRechargePriceCell.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import "QXRechargePriceCell.h"
|
||||
|
||||
@implementation QXRechargePriceCell
|
||||
//-(void)setIsCustom:(BOOL)isCustom{
|
||||
// _isCustom = isCustom;
|
||||
// self.customLabel.hidden = !isCustom;
|
||||
// self.cornBtn.hidden = isCustom;
|
||||
// self.priceLabel.hidden = isCustom;
|
||||
//}
|
||||
-(void)setModel:(QXRechargeListModel *)model{
|
||||
_model = model;
|
||||
self.priceLabel.text = model.money;
|
||||
[self.cornBtn setTitle:model.coins forState:(UIControlStateNormal)];
|
||||
if (model.money.intValue == 0 && model.coins.intValue == 0) {
|
||||
self.customLabel.hidden = NO;
|
||||
self.cornBtn.hidden = YES;
|
||||
self.priceLabel.hidden = YES;
|
||||
}else{
|
||||
self.customLabel.hidden = YES;
|
||||
self.cornBtn.hidden = NO;
|
||||
self.priceLabel.hidden = NO;
|
||||
}
|
||||
if (model.isSelected) {
|
||||
self.bgView.layer.borderWidth = 1;
|
||||
}else{
|
||||
self.bgView.layer.borderWidth = 0;
|
||||
}
|
||||
}
|
||||
|
||||
- (void)awakeFromNib {
|
||||
[super awakeFromNib];
|
||||
// Initialization code
|
||||
self.bgView.layer.borderColor = RGB16(0x333333).CGColor;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
96
QXLive/Mine(音域)/View/充值/QXRechargePriceCell.xib
Normal file
96
QXLive/Mine(音域)/View/充值/QXRechargePriceCell.xib
Normal file
@@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="23504" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
|
||||
<device id="retina6_12" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23506"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
|
||||
<collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="gTV-IL-0wX" customClass="QXRechargePriceCell">
|
||||
<rect key="frame" x="0.0" y="0.0" width="192" height="109"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
|
||||
<rect key="frame" x="0.0" y="0.0" width="192" height="109"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nHo-Pz-H75">
|
||||
<rect key="frame" x="0.0" y="0.0" width="192" height="109"/>
|
||||
<subviews>
|
||||
<button opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="1OT-Sn-WEd">
|
||||
<rect key="frame" x="10" y="16" width="172" height="20"/>
|
||||
<accessibility key="accessibilityConfiguration">
|
||||
<accessibilityTraits key="traits" button="YES" notEnabled="YES"/>
|
||||
</accessibility>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="BSv-Yw-o0Q"/>
|
||||
</constraints>
|
||||
<inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
|
||||
<state key="normal" title=" 9999" image="mine_recharge_corn">
|
||||
<color key="titleColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="calibratedRGB"/>
|
||||
</state>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="55N-9b-roi">
|
||||
<rect key="frame" x="10" y="73" width="172" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="pfj-hm-ZWY"/>
|
||||
</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>
|
||||
<label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="自定义" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xNn-bN-KCh">
|
||||
<rect key="frame" x="75" y="46" width="42" height="17"/>
|
||||
<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>
|
||||
</subviews>
|
||||
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
|
||||
<constraints>
|
||||
<constraint firstItem="1OT-Sn-WEd" firstAttribute="leading" secondItem="nHo-Pz-H75" secondAttribute="leading" constant="10" id="5a0-Vh-c80"/>
|
||||
<constraint firstItem="1OT-Sn-WEd" firstAttribute="top" secondItem="nHo-Pz-H75" secondAttribute="top" constant="16" id="Ktn-2E-pb8"/>
|
||||
<constraint firstAttribute="bottom" secondItem="55N-9b-roi" secondAttribute="bottom" constant="16" id="NFg-kL-mea"/>
|
||||
<constraint firstAttribute="trailing" secondItem="1OT-Sn-WEd" secondAttribute="trailing" constant="10" id="gjz-gQ-HiA"/>
|
||||
<constraint firstItem="55N-9b-roi" firstAttribute="leading" secondItem="nHo-Pz-H75" secondAttribute="leading" constant="10" id="jR5-2h-t4b"/>
|
||||
<constraint firstItem="xNn-bN-KCh" firstAttribute="centerY" secondItem="nHo-Pz-H75" secondAttribute="centerY" id="jSm-d9-oyR"/>
|
||||
<constraint firstItem="xNn-bN-KCh" firstAttribute="centerX" secondItem="nHo-Pz-H75" secondAttribute="centerX" id="n4b-Um-FRy"/>
|
||||
<constraint firstAttribute="trailing" secondItem="55N-9b-roi" secondAttribute="trailing" constant="10" id="zTu-tz-zzk"/>
|
||||
</constraints>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="10"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
</subviews>
|
||||
</view>
|
||||
<viewLayoutGuide key="safeArea" id="SEy-5g-ep8"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="bottom" secondItem="nHo-Pz-H75" secondAttribute="bottom" id="7Wh-Fo-ztf"/>
|
||||
<constraint firstItem="nHo-Pz-H75" firstAttribute="top" secondItem="gTV-IL-0wX" secondAttribute="top" id="8uy-7g-xVF"/>
|
||||
<constraint firstItem="nHo-Pz-H75" firstAttribute="leading" secondItem="gTV-IL-0wX" secondAttribute="leading" id="XIM-WM-ulB"/>
|
||||
<constraint firstAttribute="trailing" secondItem="nHo-Pz-H75" secondAttribute="trailing" id="tKd-Oe-p0d"/>
|
||||
</constraints>
|
||||
<size key="customSize" width="192" height="109"/>
|
||||
<connections>
|
||||
<outlet property="bgView" destination="nHo-Pz-H75" id="RUz-p6-dtq"/>
|
||||
<outlet property="cornBtn" destination="1OT-Sn-WEd" id="zNH-co-Owm"/>
|
||||
<outlet property="customLabel" destination="xNn-bN-KCh" id="RZw-J7-8Tr"/>
|
||||
<outlet property="priceLabel" destination="55N-9b-roi" id="wL2-7m-W0o"/>
|
||||
</connections>
|
||||
<point key="canvasLocation" x="245.80152671755724" y="40.492957746478872"/>
|
||||
</collectionViewCell>
|
||||
</objects>
|
||||
<resources>
|
||||
<image name="mine_recharge_corn" width="20" height="20"/>
|
||||
<systemColor name="systemBackgroundColor">
|
||||
<color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
32
QXLive/Mine(音域)/View/充值/QXRechargeView.h
Normal file
32
QXLive/Mine(音域)/View/充值/QXRechargeView.h
Normal file
@@ -0,0 +1,32 @@
|
||||
//
|
||||
// QXRechargeView.h
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "QXRechargeListModel.h"
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface QXRechargeView : UIView
|
||||
@property (nonatomic,assign)BOOL isPop;
|
||||
@property (nonatomic,assign)BOOL isOnlyDisplayPayType;
|
||||
@property (nonatomic,strong)QXRechargeListModel *selectedModel;
|
||||
-(void)showInView:(UIView *)view;
|
||||
@end
|
||||
|
||||
|
||||
@interface QXRechargeCustomView : UICollectionReusableView<UITextFieldDelegate>
|
||||
@property (nonatomic,strong)UIView *bgView;
|
||||
@property (nonatomic,strong)UILabel *unitLabel;
|
||||
@property (nonatomic,strong)UITextField *textField;
|
||||
@property (nonatomic,strong)UILabel *cornLabel;
|
||||
@property (nonatomic,strong)UIView *bottomLine;
|
||||
@end
|
||||
|
||||
@interface QXRechargeHeaderView : UICollectionReusableView
|
||||
@property (nonatomic,strong)UIView *bgView;
|
||||
@property (nonatomic,strong)UILabel *titleLabel;
|
||||
@end
|
||||
NS_ASSUME_NONNULL_END
|
||||
511
QXLive/Mine(音域)/View/充值/QXRechargeView.m
Normal file
511
QXLive/Mine(音域)/View/充值/QXRechargeView.m
Normal file
@@ -0,0 +1,511 @@
|
||||
//
|
||||
// QXRechargeView.m
|
||||
// QXLive
|
||||
//
|
||||
// Created by 启星 on 2025/5/16.
|
||||
//
|
||||
|
||||
#import "QXRechargeView.h"
|
||||
#import "QXRechargePriceCell.h"
|
||||
#import "QXRechargePayTypeCell.h"
|
||||
#import "QXMineNetwork.h"
|
||||
#import <AlipaySDK/AlipaySDK.h>
|
||||
#import <WXApi.h>
|
||||
|
||||
@class QXRechargeCustomView,QXRechargeHeaderView;
|
||||
@interface QXRechargeView()<UICollectionViewDelegate,UICollectionViewDataSource,UICollectionViewDelegateFlowLayout,UIGestureRecognizerDelegate>
|
||||
@property (nonatomic,strong)UICollectionView *collectionView;
|
||||
@property (nonatomic,strong)QXRechargeCustomView *rechargeCustomView;
|
||||
@property (nonatomic,strong)QXRechargeHeaderView *rechargeHeaderView;
|
||||
@property (nonatomic,strong)UIButton *rechargeBtn;
|
||||
@property (nonatomic,strong)UIView *bgView;
|
||||
@property (nonatomic,assign)BOOL isCustom;
|
||||
@property (nonatomic,strong)QXPayTypeModel *selectedPayTypeModel;
|
||||
@property (nonatomic,strong)UILabel *titleLabel;
|
||||
@property (nonatomic,strong)UITapGestureRecognizer *tap;
|
||||
@property (nonatomic,strong)NSMutableArray *rechargeDataArray;
|
||||
@property (nonatomic,strong)NSMutableArray *payTypeArray;
|
||||
@end
|
||||
|
||||
@implementation QXRechargeView
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)initSubviews{
|
||||
QXRechargeListModel *model = [[QXRechargeListModel alloc] init];
|
||||
model.money = @"0";
|
||||
model.coins = @"0";
|
||||
[self.rechargeDataArray addObject:model];
|
||||
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hide)];
|
||||
tap.delegate = self;
|
||||
tap.enabled = NO;
|
||||
self.tap = tap;
|
||||
[self addGestureRecognizer:tap];
|
||||
|
||||
self.bgView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, self.height)];
|
||||
self.bgView.backgroundColor = [UIColor clearColor];
|
||||
|
||||
[self addSubview:self.bgView];
|
||||
|
||||
self.titleLabel = [[UILabel alloc] init];
|
||||
self.titleLabel.textColor = QXConfig.textColor;
|
||||
self.titleLabel.font = [UIFont boldSystemFontOfSize:16];
|
||||
self.titleLabel.text = QXText(@"充值");
|
||||
self.titleLabel.hidden = YES;
|
||||
[self.bgView addSubview:self.titleLabel];
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(12);
|
||||
make.centerX.equalTo(self.bgView);
|
||||
}];
|
||||
|
||||
[self.bgView addSubview:self.collectionView];
|
||||
[self.bgView addSubview:self.rechargeBtn];
|
||||
[self.rechargeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(-38);
|
||||
make.left.mas_equalTo(38);
|
||||
make.height.mas_equalTo(42);
|
||||
make.bottom.mas_equalTo(-kSafeAreaBottom);
|
||||
}];
|
||||
|
||||
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(0);
|
||||
make.left.mas_equalTo(0);
|
||||
make.top.equalTo(self.bgView);
|
||||
make.bottom.equalTo(self.rechargeBtn.mas_top).offset(-10);
|
||||
}];
|
||||
[self getRechargeList];
|
||||
|
||||
}
|
||||
|
||||
-(void)getRechargeList{
|
||||
MJWeakSelf
|
||||
[QXMineNetwork getRechargeListSuccessBlock:^(NSArray<QXRechargeListModel *> * _Nonnull list) {
|
||||
[weakSelf.rechargeDataArray removeAllObjects];
|
||||
[weakSelf.rechargeDataArray addObjectsFromArray:list];
|
||||
QXRechargeListModel *model = [[QXRechargeListModel alloc] init];
|
||||
model.money = @"0";
|
||||
model.coins = @"0";
|
||||
[weakSelf.rechargeDataArray addObject:model];
|
||||
[weakSelf.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
}];
|
||||
|
||||
[QXMineNetwork walletPayTypeWithUserId:QXGlobal.shareGlobal.loginModel.user_id successBlock:^(QXPayTypeStatusModel * _Nonnull model) {
|
||||
[weakSelf.payTypeArray removeAllObjects];
|
||||
if (model.wx.is_pay_open.intValue == 1) {
|
||||
[weakSelf.payTypeArray addObject:model.wx];
|
||||
}
|
||||
if (model.ali.is_pay_open.intValue == 1) {
|
||||
[weakSelf.payTypeArray addObject:model.ali];
|
||||
}
|
||||
if (model.wx_tl.is_pay_open.intValue == 1) {
|
||||
[weakSelf.payTypeArray addObject:model.wx_tl];
|
||||
}
|
||||
if (model.ali_tl.is_pay_open.intValue == 1) {
|
||||
[weakSelf.payTypeArray addObject:model.ali_tl];
|
||||
}
|
||||
if (!self.isOnlyDisplayPayType) {
|
||||
[weakSelf.collectionView reloadSections:[NSIndexSet indexSetWithIndex:1]];
|
||||
}
|
||||
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
|
||||
}];
|
||||
}
|
||||
|
||||
-(void)setIsPop:(BOOL)isPop{
|
||||
_isPop = isPop;
|
||||
self.tap.enabled = YES;
|
||||
self.bgView.frame = CGRectMake(0, 0, self.width, ScaleWidth(575));
|
||||
self.bgView.backgroundColor = [UIColor whiteColor];
|
||||
self.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.3];
|
||||
self.titleLabel.hidden = !isPop;
|
||||
[self.bgView addRoundedCornersWithRadius:16 byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight)];
|
||||
[self.collectionView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(0);
|
||||
make.left.mas_equalTo(0);
|
||||
make.top.equalTo(self.bgView).offset(50);
|
||||
make.bottom.equalTo(self.rechargeBtn.mas_top).offset(-10);
|
||||
}];
|
||||
}
|
||||
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
|
||||
return touch.view == self;
|
||||
}
|
||||
-(void)showInView:(UIView *)view{
|
||||
self.bgView.y = SCREEN_HEIGHT;
|
||||
[view addSubview:self];
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
self.bgView.y = SCREEN_HEIGHT-self.bgView.height;
|
||||
}];
|
||||
}
|
||||
-(void)hide{
|
||||
if (!self.isPop) {
|
||||
return;
|
||||
}
|
||||
[UIView animateWithDuration:0.3 animations:^{
|
||||
self.bgView.y = SCREEN_HEIGHT;
|
||||
} completion:^(BOOL finished) {
|
||||
[self removeFromSuperview];
|
||||
}];
|
||||
}
|
||||
//-(void)setRechargeDataArray:(NSArray *)rechargeDataArray{
|
||||
// _rechargeDataArray = rechargeDataArray;
|
||||
// [self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
|
||||
//}
|
||||
|
||||
//-(void)setPayTypeArray:(NSArray *)payTypeArray{
|
||||
// _payTypeArray = payTypeArray;
|
||||
// [self.collectionView reloadSections:[NSIndexSet indexSetWithIndex:1]];
|
||||
//}
|
||||
|
||||
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
|
||||
if (self.isOnlyDisplayPayType) {
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
|
||||
if (section == 0 && !self.isOnlyDisplayPayType) {
|
||||
return self.rechargeDataArray.count;
|
||||
}
|
||||
return self.payTypeArray.count;
|
||||
}
|
||||
|
||||
-(__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.section == 0 && !self.isOnlyDisplayPayType) {
|
||||
QXRechargePriceCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXRechargePriceCell" forIndexPath:indexPath];
|
||||
cell.model = self.rechargeDataArray[indexPath.row];
|
||||
return cell;
|
||||
}else{
|
||||
QXRechargePayTypeCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"QXRechargePayTypeCell" forIndexPath:indexPath];
|
||||
cell.model = self.payTypeArray[indexPath.row];
|
||||
return cell;
|
||||
}
|
||||
}
|
||||
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.section == 0 && !self.isOnlyDisplayPayType) {
|
||||
return CGSizeMake((SCREEN_WIDTH-16*2-12*2)/3, 76);
|
||||
}
|
||||
return CGSizeMake(SCREEN_WIDTH, 40);
|
||||
}
|
||||
-(CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{
|
||||
if (section == 0) {
|
||||
return 12;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
-(UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.section == 0 && [kind isEqualToString:UICollectionElementKindSectionFooter] && self.isCustom) {
|
||||
self.rechargeCustomView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"QXRechargeCustomView" forIndexPath:indexPath];
|
||||
return self.rechargeCustomView;
|
||||
}else if (indexPath.section == 1 && [kind isEqualToString:UICollectionElementKindSectionHeader] ) {
|
||||
self.rechargeHeaderView = [collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"QXRechargeHeaderView" forIndexPath:indexPath];
|
||||
return self.rechargeHeaderView;
|
||||
}
|
||||
return nil;
|
||||
}
|
||||
|
||||
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section{
|
||||
if (section == 0) {
|
||||
return CGSizeZero;
|
||||
}
|
||||
return CGSizeMake(SCREEN_WIDTH, 40);
|
||||
}
|
||||
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout referenceSizeForFooterInSection:(NSInteger)section{
|
||||
if (section == 0 && self.isCustom) {
|
||||
return CGSizeMake(SCREEN_WIDTH, 50);
|
||||
}
|
||||
return CGSizeZero;
|
||||
}
|
||||
|
||||
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{
|
||||
if (indexPath.section == 0 && !self.isOnlyDisplayPayType) {
|
||||
QXRechargeListModel *model = self.rechargeDataArray[indexPath.row];
|
||||
if (self.selectedModel) {
|
||||
self.selectedModel.isSelected = NO;
|
||||
}
|
||||
model.isSelected = YES;
|
||||
self.selectedModel = model;
|
||||
if (model.money.intValue == 0 && model.coins.intValue == 0) {
|
||||
self.isCustom = YES;
|
||||
}else{
|
||||
self.isCustom = NO;
|
||||
}
|
||||
[collectionView reloadSections:[NSIndexSet indexSetWithIndex:0]];
|
||||
}else{
|
||||
QXPayTypeModel *model = self.payTypeArray[indexPath.row];
|
||||
if (model == self.selectedPayTypeModel) {
|
||||
return;
|
||||
}
|
||||
if (self.selectedPayTypeModel) {
|
||||
self.selectedPayTypeModel.isSelected = NO;
|
||||
}
|
||||
model.isSelected = YES;
|
||||
self.selectedPayTypeModel = model;
|
||||
[collectionView reloadData];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
-(void)rechargeAction:(UIButton*)sender{
|
||||
if (self.selectedPayTypeModel == nil) {
|
||||
showToast(@"请选择支付方式");
|
||||
return;
|
||||
}
|
||||
|
||||
if (self.selectedModel == nil) {
|
||||
showToast(@"请选择充值金额");
|
||||
return;
|
||||
}
|
||||
if (self.isPop) {
|
||||
[self hide];
|
||||
}
|
||||
MJWeakSelf
|
||||
[QXMineNetwork rechargePayWithMoney:self.selectedModel.money coin:self.selectedModel.coins type:self.selectedPayTypeModel.type userId:QXGlobal.shareGlobal.loginModel.user_id successBlock:^(NSDictionary * _Nonnull dict) {
|
||||
if (weakSelf.selectedPayTypeModel.type.intValue == 2) {
|
||||
NSDictionary *resultDict = dict[@"data"];
|
||||
NSString *order = [NSString stringWithFormat:@"%@",resultDict[@"ali"]];
|
||||
[[AlipaySDK defaultService] payOrder:order fromScheme:@"qxlive" callback:^(NSDictionary *resultDic) {
|
||||
NSLog(@"支付宝H5支付回调 - %@", resultDic);
|
||||
|
||||
}];
|
||||
}else if (weakSelf.selectedPayTypeModel.type.intValue == 1) {
|
||||
NSDictionary *resultDict = dict[@"data"][@"wx"];
|
||||
NSString *appid = resultDict[@"appid"];
|
||||
NSString *partnerId = resultDict[@"partnerid"];
|
||||
NSString *prepayId = [NSString stringWithFormat:@"%@",resultDict[@"prepayid"]];
|
||||
NSString *nonceStr = resultDict[@"noncestr"];
|
||||
UInt32 timeStamp = (UInt32)[resultDict[@"timestamp"] intValue];
|
||||
NSString *package = resultDict[@"package"];
|
||||
NSString *sign = resultDict[@"sign"];
|
||||
PayReq *req = [[PayReq alloc] init];
|
||||
req.openID = appid;
|
||||
req.partnerId = partnerId;
|
||||
req.prepayId = prepayId;
|
||||
req.nonceStr = nonceStr;
|
||||
req.timeStamp = timeStamp;
|
||||
req.package = package;
|
||||
req.sign = sign;
|
||||
[WXApi sendReq:req completion:^(BOOL success) {
|
||||
|
||||
}];
|
||||
}
|
||||
else if (weakSelf.selectedPayTypeModel.type.intValue == 4) {
|
||||
NSMutableDictionary*dic = [NSMutableDictionary dictionaryWithDictionary:dict[@"data"][@"tl"]];
|
||||
[dic removeObjectForKey:@"json_data"];
|
||||
NSString *json = [dic jsonStringEncoded];
|
||||
NSString *thirdPartSchema = @"thirdPartSchema=qxlive://";
|
||||
NSString *json1 = [json stringByReplacingOccurrencesOfString:@"\\" withString:@""];
|
||||
NSCharacterSet *customSet1 = [[NSCharacterSet characterSetWithCharactersInString:@"!*'();:@&=+$,/?%#[]{}\""] invertedSet];
|
||||
// NSCharacterSet *customSet2 = [[NSCharacterSet characterSetWithCharactersInString:@"!*'();:@&=+$,/?%#[]{}\""] invertedSet];
|
||||
NSCharacterSet *customSet3 = [[NSCharacterSet characterSetWithCharactersInString:@"!*'();:@&=+$,/?%#[]{}\""] invertedSet];
|
||||
NSString *json2 = [json1 stringByAddingPercentEncodingWithAllowedCharacters:customSet1];
|
||||
NSString *encodedString = [thirdPartSchema stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
|
||||
NSString *queryString = [NSString stringWithFormat:@"payinfo=%@", json2];
|
||||
NSString *doubleEncodedQuery = [queryString stringByAddingPercentEncodingWithAllowedCharacters:customSet3];
|
||||
NSString *jumpStr = [NSString stringWithFormat:@"alipays://platformapi/startapp?appId=2021001104615521&page=pages/orderDetail/orderDetail&%@&query=%@",encodedString,doubleEncodedQuery];
|
||||
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:jumpStr] options:@{} completionHandler:nil];
|
||||
}else if (weakSelf.selectedPayTypeModel.type.intValue == 5) {
|
||||
WXLaunchMiniProgramReq *launchMiniProgramReq = [WXLaunchMiniProgramReq object];
|
||||
launchMiniProgramReq.userName = @"gh_e64a1a89a0ad";
|
||||
NSDictionary *dic = dict[@"data"][@"tl"];
|
||||
NSString *param = @"";
|
||||
for (NSString*key in dic.allKeys) {
|
||||
if (param.length == 0) {
|
||||
param = [param stringByAppendingFormat:@"%@=%@",key,dic[key]];
|
||||
}else{
|
||||
param = [param stringByAppendingFormat:@"&%@=%@",key,dic[key]];
|
||||
}
|
||||
}
|
||||
launchMiniProgramReq.path = [NSString stringWithFormat:@"pages/orderDetail/orderDetail?%@",param];
|
||||
launchMiniProgramReq.miniProgramType = WXMiniProgramTypeRelease;
|
||||
[WXApi sendReq:launchMiniProgramReq completion:nil];
|
||||
}
|
||||
|
||||
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
|
||||
showToast(msg)
|
||||
}];
|
||||
}
|
||||
-(UICollectionView *)collectionView{
|
||||
if (!_collectionView) {
|
||||
UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init];
|
||||
layout.minimumLineSpacing = 12;
|
||||
layout.minimumInteritemSpacing = 12;
|
||||
layout.sectionInset = UIEdgeInsetsMake(0, 16, 0, 16);
|
||||
_collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout];
|
||||
_collectionView.delegate = self;
|
||||
_collectionView.dataSource = self;
|
||||
_collectionView.backgroundColor = [UIColor clearColor];
|
||||
[_collectionView registerNib:[UINib nibWithNibName:@"QXRechargePriceCell" bundle:[NSBundle mainBundle]] forCellWithReuseIdentifier:@"QXRechargePriceCell"];
|
||||
[_collectionView registerClass:[QXRechargePayTypeCell class] forCellWithReuseIdentifier:@"QXRechargePayTypeCell"];
|
||||
[_collectionView registerClass:[QXRechargeCustomView class] forSupplementaryViewOfKind:UICollectionElementKindSectionFooter withReuseIdentifier:@"QXRechargeCustomView"];
|
||||
[_collectionView registerClass:[QXRechargeHeaderView class] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:@"QXRechargeHeaderView"];
|
||||
}
|
||||
return _collectionView;
|
||||
}
|
||||
-(UIButton *)rechargeBtn{
|
||||
if (!_rechargeBtn) {
|
||||
_rechargeBtn = [[UIButton alloc] init];
|
||||
[_rechargeBtn setTitle:QXText(@"确认充值") forState:(UIControlStateNormal)];
|
||||
[_rechargeBtn setTitleColor:QXConfig.btnTextColor forState:(UIControlStateNormal)];
|
||||
[_rechargeBtn addTarget:self action:@selector(rechargeAction:) forControlEvents:(UIControlEventTouchUpInside)];
|
||||
[_rechargeBtn addRoundedCornersWithRadius:21];
|
||||
_rechargeBtn.titleLabel.font = [UIFont systemFontOfSize:14];
|
||||
_rechargeBtn.backgroundColor = QXConfig.themeColor;
|
||||
}
|
||||
return _rechargeBtn;
|
||||
}
|
||||
|
||||
-(QXRechargeCustomView *)rechargeCustomView{
|
||||
if (!_rechargeCustomView) {
|
||||
_rechargeCustomView = [[QXRechargeCustomView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 40)];
|
||||
}
|
||||
return _rechargeCustomView;
|
||||
}
|
||||
|
||||
-(QXRechargeHeaderView *)rechargeHeaderView{
|
||||
if (!_rechargeHeaderView) {
|
||||
_rechargeHeaderView = [[QXRechargeHeaderView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 40)];
|
||||
}
|
||||
return _rechargeHeaderView;
|
||||
}
|
||||
|
||||
-(NSMutableArray *)rechargeDataArray{
|
||||
if (!_rechargeDataArray) {
|
||||
_rechargeDataArray = [NSMutableArray array];
|
||||
}
|
||||
return _rechargeDataArray;
|
||||
}
|
||||
-(NSMutableArray *)payTypeArray{
|
||||
if (!_payTypeArray) {
|
||||
_payTypeArray = [NSMutableArray array];
|
||||
}
|
||||
return _payTypeArray;
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
|
||||
|
||||
@implementation QXRechargeCustomView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)initSubviews{
|
||||
self.bgView = [[UIView alloc] init];
|
||||
[self addSubview:self.bgView];
|
||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(16);
|
||||
make.right.mas_equalTo(-16);
|
||||
make.top.bottom.equalTo(self);
|
||||
}];
|
||||
|
||||
self.unitLabel = [[UILabel alloc] init];
|
||||
self.unitLabel.text = @"¥";
|
||||
self.unitLabel.font = [UIFont boldSystemFontOfSize:18];
|
||||
self.unitLabel.textColor = RGB16(0x333333);
|
||||
[self.bgView addSubview:self.unitLabel];
|
||||
[self.unitLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.left.equalTo(self.bgView);
|
||||
}];
|
||||
|
||||
self.cornLabel = [[UILabel alloc] init];
|
||||
self.cornLabel.font = [UIFont systemFontOfSize:12];
|
||||
self.cornLabel.textColor = RGB16(0x333333);
|
||||
self.cornLabel.text = [NSString stringWithFormat:@"%@0%@",QXText(@"将获得"),QXText(@"金币")];
|
||||
[self.bgView addSubview:self.cornLabel];
|
||||
[self.cornLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.centerY.equalTo(self.bgView);
|
||||
}];
|
||||
|
||||
|
||||
self.textField = [[UITextField alloc] init];
|
||||
self.textField.returnKeyType = UIReturnKeyDone;
|
||||
self.textField.delegate = self;
|
||||
self.textField.font = [UIFont systemFontOfSize:13];
|
||||
self.textField.textColor = RGB16(0x333333);
|
||||
self.textField.placeholder = QXText(@"请输入充值金额");
|
||||
[self.bgView addSubview:self.textField];
|
||||
[self.textField mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self.unitLabel.mas_right).offset(3);
|
||||
make.top.bottom.equalTo(self.bgView);
|
||||
make.width.mas_equalTo(260);
|
||||
}];
|
||||
|
||||
|
||||
self.bottomLine = [[UIView alloc] init];
|
||||
self.bottomLine.backgroundColor = RGB16(0x999999);
|
||||
[self.bgView addSubview:self.bottomLine];
|
||||
[self.bottomLine mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.bottom.right.equalTo(self.bgView);
|
||||
make.height.mas_equalTo(0.5);
|
||||
}];
|
||||
}
|
||||
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
|
||||
[textField resignFirstResponder];
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation QXRechargeHeaderView
|
||||
- (instancetype)init
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
- (instancetype)initWithFrame:(CGRect)frame
|
||||
{
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubviews];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
-(void)initSubviews{
|
||||
self.bgView = [[UIView alloc] init];
|
||||
[self addSubview:self.bgView];
|
||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(16);
|
||||
make.right.mas_equalTo(-16);
|
||||
make.top.bottom.equalTo(self);
|
||||
}];
|
||||
self.titleLabel = [[UILabel alloc] init];
|
||||
self.titleLabel.text = QXText(@"支付方式");
|
||||
self.titleLabel.font = [UIFont boldSystemFontOfSize:16];
|
||||
self.titleLabel.textColor = RGB16(0x333333);
|
||||
[self.bgView addSubview:self.titleLabel];
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.equalTo(self.bgView);
|
||||
make.right.mas_equalTo(-16);
|
||||
make.top.bottom.equalTo(self);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user