贵族特权-隐身进房
@@ -173,6 +173,9 @@
|
||||
9B85F3502806A34B006EDF51 /* anchorPK_progress.svga in Resources */ = {isa = PBXBuildFile; fileRef = 9B85F34F2806A34B006EDF51 /* anchorPK_progress.svga */; };
|
||||
9B85F3532806AB9A006EDF51 /* XPAnchorPKResultView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85F3522806AB9A006EDF51 /* XPAnchorPKResultView.m */; };
|
||||
9B85F3562806DD8A006EDF51 /* XPAnchorPKFinishView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B85F3552806DD8A006EDF51 /* XPAnchorPKFinishView.m */; };
|
||||
9B86D87A2817DD8400494FCD /* XPRoomEnterHideTipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D8792817DD8400494FCD /* XPRoomEnterHideTipView.m */; };
|
||||
9B86D87D2817EA0900494FCD /* XPNobleSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D87C2817EA0900494FCD /* XPNobleSettingViewController.m */; };
|
||||
9B86D8802817F4A300494FCD /* XPNobleSettingNavView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B86D87F2817F4A300494FCD /* XPNobleSettingNavView.m */; };
|
||||
9B92A3392797BE4500AD168F /* XPMineSkillTipView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92A3382797BE4500AD168F /* XPMineSkillTipView.m */; };
|
||||
9B92A33C2797E38100AD168F /* XPMineHeadItemTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92A33B2797E38100AD168F /* XPMineHeadItemTableViewCell.m */; };
|
||||
9B92A3442797EE6500AD168F /* XPMatchManagePresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92A3432797EE6500AD168F /* XPMatchManagePresenter.m */; };
|
||||
@@ -1048,6 +1051,12 @@
|
||||
9B85F3522806AB9A006EDF51 /* XPAnchorPKResultView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKResultView.m; sourceTree = "<group>"; };
|
||||
9B85F3542806DD8A006EDF51 /* XPAnchorPKFinishView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPAnchorPKFinishView.h; sourceTree = "<group>"; };
|
||||
9B85F3552806DD8A006EDF51 /* XPAnchorPKFinishView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPAnchorPKFinishView.m; sourceTree = "<group>"; };
|
||||
9B86D8782817DD8400494FCD /* XPRoomEnterHideTipView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPRoomEnterHideTipView.h; sourceTree = "<group>"; };
|
||||
9B86D8792817DD8400494FCD /* XPRoomEnterHideTipView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPRoomEnterHideTipView.m; sourceTree = "<group>"; };
|
||||
9B86D87B2817EA0900494FCD /* XPNobleSettingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleSettingViewController.h; sourceTree = "<group>"; };
|
||||
9B86D87C2817EA0900494FCD /* XPNobleSettingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleSettingViewController.m; sourceTree = "<group>"; };
|
||||
9B86D87E2817F4A300494FCD /* XPNobleSettingNavView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPNobleSettingNavView.h; sourceTree = "<group>"; };
|
||||
9B86D87F2817F4A300494FCD /* XPNobleSettingNavView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPNobleSettingNavView.m; sourceTree = "<group>"; };
|
||||
9B92A3372797BE4500AD168F /* XPMineSkillTipView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineSkillTipView.h; sourceTree = "<group>"; };
|
||||
9B92A3382797BE4500AD168F /* XPMineSkillTipView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPMineSkillTipView.m; sourceTree = "<group>"; };
|
||||
9B92A33A2797E38100AD168F /* XPMineHeadItemTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPMineHeadItemTableViewCell.h; sourceTree = "<group>"; };
|
||||
@@ -3285,6 +3294,8 @@
|
||||
9BEE3D1627858E5700C83219 /* XPNobleAuthorityDescView.m */,
|
||||
9BBC02852786D75C0007C24B /* XPNobleUpgradeLevelView.h */,
|
||||
9BBC02862786D75C0007C24B /* XPNobleUpgradeLevelView.m */,
|
||||
9B86D87E2817F4A300494FCD /* XPNobleSettingNavView.h */,
|
||||
9B86D87F2817F4A300494FCD /* XPNobleSettingNavView.m */,
|
||||
);
|
||||
path = SubViews;
|
||||
sourceTree = "<group>";
|
||||
@@ -3344,6 +3355,8 @@
|
||||
9BC5C8EC277AFF63007C8719 /* XPNobleCenterViewController.m */,
|
||||
9BC5C8F4277B0263007C8719 /* XPNobleCenterListViewController.h */,
|
||||
9BC5C8F5277B0263007C8719 /* XPNobleCenterListViewController.m */,
|
||||
9B86D87B2817EA0900494FCD /* XPNobleSettingViewController.h */,
|
||||
9B86D87C2817EA0900494FCD /* XPNobleSettingViewController.m */,
|
||||
9BEE3D0C27853BD000C83219 /* ThemeColor+NobleCenter.h */,
|
||||
9BEE3D0D27853BD000C83219 /* ThemeColor+NobleCenter.m */,
|
||||
);
|
||||
@@ -4037,6 +4050,8 @@
|
||||
9B6B3AAA278C2EA7005551EC /* XPRoomNobleLevelUpView.m */,
|
||||
9BC8C82E28090C9200C24F85 /* XPRoomAnchorRankBannerView.h */,
|
||||
9BC8C82F28090C9200C24F85 /* XPRoomAnchorRankBannerView.m */,
|
||||
9B86D8782817DD8400494FCD /* XPRoomEnterHideTipView.h */,
|
||||
9B86D8792817DD8400494FCD /* XPRoomEnterHideTipView.m */,
|
||||
E838D99E275E1BF60079E0B5 /* XPRoomAnimationView.h */,
|
||||
E838D99F275E1BF60079E0B5 /* XPRoomAnimationView.m */,
|
||||
9BC9DAED27E33B3F009EE409 /* XPRoomGiftAnimationParser.h */,
|
||||
@@ -6085,6 +6100,7 @@
|
||||
E824545C26F5EEBA00BE8163 /* XPMineVerifIdentityPresenter.m in Sources */,
|
||||
9B92A3562798096000AD168F /* XPSkillCardPresenter.m in Sources */,
|
||||
E8A1E44E2761F98600B294CA /* XPCandyTreeViewController.m in Sources */,
|
||||
9B86D8802817F4A300494FCD /* XPNobleSettingNavView.m in Sources */,
|
||||
E836DBCD279BF2F10056F7DD /* XPLittleGameRoomListView.m in Sources */,
|
||||
E8899C852785CC69007944BE /* XPRoomDatingAnimationView.m in Sources */,
|
||||
E84BF7D4277C383700EF8877 /* XPRoomSettingInputView.m in Sources */,
|
||||
@@ -6337,6 +6353,7 @@
|
||||
E8DEC9A82764A68B0078CB70 /* Api+MoreMenu.m in Sources */,
|
||||
E8A6C28F27CF43D600AC7442 /* XPHomeAttentionTableViewCell.m in Sources */,
|
||||
E8E5E19D27C36C3500F457D8 /* XPHomeMenuTableViewCell.m in Sources */,
|
||||
9B86D87A2817DD8400494FCD /* XPRoomEnterHideTipView.m in Sources */,
|
||||
E8AC721026F43955007D6E91 /* UIImageConstant.m in Sources */,
|
||||
E81C27A026EEF83D0031E639 /* XPHtmlUrl.m in Sources */,
|
||||
E800807C27FD84980055A8AB /* GuildInfoModel.m in Sources */,
|
||||
@@ -6409,6 +6426,7 @@
|
||||
9BBC02872786D75C0007C24B /* XPNobleUpgradeLevelView.m in Sources */,
|
||||
9B92A3442797EE6500AD168F /* XPMatchManagePresenter.m in Sources */,
|
||||
E88B5CBD26FB3BDF00DA9178 /* XPTeenagerAlertView.m in Sources */,
|
||||
9B86D87D2817EA0900494FCD /* XPNobleSettingViewController.m in Sources */,
|
||||
E82D5C70276AE60000858D6D /* HeadwearModel.m in Sources */,
|
||||
E8A03DEC276301EF0098D9EA /* XPCandyTreeRankView.m in Sources */,
|
||||
E880B3A1278BD60C00A83B0D /* XPAcrossRoomPKSelectRoomView.m in Sources */,
|
||||
|
22
xplan-ios/Assets.xcassets/Mine/Noble/noble_nav_setting.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "noble_nav_setting@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "noble_nav_setting@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Mine/Noble/noble_nav_setting.imageset/noble_nav_setting@2x.png
vendored
Normal file
After Width: | Height: | Size: 712 B |
BIN
xplan-ios/Assets.xcassets/Mine/Noble/noble_nav_setting.imageset/noble_nav_setting@3x.png
vendored
Normal file
After Width: | Height: | Size: 912 B |
22
xplan-ios/Assets.xcassets/Mine/Noble/noble_setting_visible_close.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "noble_setting_visible_close@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "noble_setting_visible_close@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 496 B |
After Width: | Height: | Size: 545 B |
22
xplan-ios/Assets.xcassets/Mine/Noble/noble_setting_visible_open.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "noble_setting_visible_open@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "noble_setting_visible_open@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 491 B |
After Width: | Height: | Size: 555 B |
22
xplan-ios/Assets.xcassets/Room/Position/room_position_ forbid_kicked.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_position_ forbid_kicked@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_position_ forbid_kicked@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 2.0 KiB |
22
xplan-ios/Assets.xcassets/Room/room_enterRoom_hide.imageset/Contents.json
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"images" : [
|
||||
{
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_enterRoom_hide@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "room_enterRoom_hide@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
BIN
xplan-ios/Assets.xcassets/Room/room_enterRoom_hide.imageset/room_enterRoom_hide@2x.png
vendored
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
xplan-ios/Assets.xcassets/Room/room_enterRoom_hide.imageset/room_enterRoom_hide@3x.png
vendored
Normal file
After Width: | Height: | Size: 3.9 KiB |
@@ -114,6 +114,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, assign) GroupType groupType;
|
||||
///
|
||||
@property (nonatomic,strong) NSArray<UserGiftWallInfoModel *> *userGiftWall;
|
||||
///是否隐身进房 0:不隐身;1:隐身
|
||||
@property (nonatomic, assign) NobleEnterHideStatus enterHide;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -60,4 +60,8 @@ typedef NS_ENUM(NSInteger, LittleGamePlayStatus) {
|
||||
LittleGamePlayStatus_Plying = 3,//游戏中
|
||||
};
|
||||
|
||||
typedef NS_ENUM(NSUInteger, NobleEnterHideStatus) {
|
||||
NobleEnterHideStatus_NoHide = 0,//不隐身
|
||||
NobleEnterHideStatus_Hide = 1,//隐身
|
||||
};
|
||||
#endif /* XPEnum_h */
|
||||
|
@@ -16,6 +16,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickBackButton:(UIButton *)sender;
|
||||
///点击了帮助按钮
|
||||
- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickHelpButton:(UIButton *)sender;
|
||||
///点击了设置按钮
|
||||
- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickSettingButton:(UIButton *)sender;
|
||||
|
||||
@end
|
||||
|
||||
|
@@ -19,6 +19,8 @@
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
///帮助按钮
|
||||
@property (nonatomic, strong) UIButton *helpButton;
|
||||
///设置按钮
|
||||
@property (nonatomic, strong) UIButton *settingButton;
|
||||
@end
|
||||
|
||||
@implementation XPNobleCenterNavView
|
||||
@@ -43,12 +45,19 @@
|
||||
}
|
||||
}
|
||||
|
||||
- (void)settingButtonAction:(UIButton *)sender {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPNobleCenterNavView:didClickSettingButton:)]) {
|
||||
[self.delegate xPNobleCenterNavView:self didClickSettingButton:sender];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self addSubview:self.backButton];
|
||||
[self addSubview:self.titleLabel];
|
||||
[self addSubview:self.helpButton];
|
||||
[self addSubview:self.settingButton];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
@@ -60,6 +69,10 @@
|
||||
make.right.mas_equalTo(-15);
|
||||
make.centerY.equalTo(self.mas_bottom).mas_offset(-22);
|
||||
}];
|
||||
[self.settingButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.right.mas_equalTo(self.helpButton.mas_left).mas_offset(-8);
|
||||
make.centerY.equalTo(self.mas_bottom).mas_offset(-22);
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
@@ -90,6 +103,16 @@
|
||||
return _helpButton;
|
||||
}
|
||||
|
||||
- (UIButton *)settingButton {
|
||||
if (!_settingButton) {
|
||||
_settingButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_settingButton setImage:[UIImage imageNamed:@"noble_nav_setting"] forState:UIControlStateNormal];
|
||||
_settingButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
|
||||
[_settingButton addTarget:self action:@selector(settingButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_settingButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10];
|
||||
}
|
||||
return _settingButton;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
|
@@ -0,0 +1,27 @@
|
||||
//
|
||||
// XPNobleSettingNavView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/26.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@class XPNobleSettingNavView;
|
||||
@protocol XPNobleSettingNavViewDelegate <NSObject>
|
||||
|
||||
///点击了返回按钮
|
||||
- (void)xPNobleSettingNavView:(XPNobleSettingNavView *)view didClickBackButton:(UIButton *)sender;
|
||||
|
||||
@end
|
||||
|
||||
@interface XPNobleSettingNavView : UIView
|
||||
|
||||
///代理
|
||||
@property (nonatomic,weak) id<XPNobleSettingNavViewDelegate> delegate;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,82 @@
|
||||
//
|
||||
// XPNobleSettingNavView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/26.
|
||||
//
|
||||
|
||||
#import "XPNobleSettingNavView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor.h"
|
||||
#import "UIButton+EnlargeTouchArea.h"
|
||||
|
||||
@interface XPNobleSettingNavView ()
|
||||
///返回按钮
|
||||
@property (nonatomic,strong) UIButton *backButton;
|
||||
///显示文本
|
||||
@property (nonatomic,strong) UILabel *titleLabel;
|
||||
@end
|
||||
|
||||
@implementation XPNobleSettingNavView
|
||||
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
#pragma mark - Response
|
||||
- (void)backButtonAction:(UIButton *)sender {
|
||||
if (self.delegate && [self.delegate respondsToSelector:@selector(xPNobleSettingNavView:didClickBackButton:)]) {
|
||||
[self.delegate xPNobleSettingNavView:self didClickBackButton:sender];
|
||||
}
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
[self addSubview:self.backButton];
|
||||
[self addSubview:self.titleLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.backButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(15);
|
||||
make.centerY.equalTo(self.mas_bottom).mas_offset(-22);
|
||||
}];
|
||||
|
||||
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
make.centerY.equalTo(self.mas_bottom).mas_offset(-22);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIButton *)backButton {
|
||||
if (!_backButton) {
|
||||
_backButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_backButton setImage:[UIImage imageNamed:@"home_search_white_back"] forState:UIControlStateNormal];
|
||||
_backButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
|
||||
[_backButton addTarget:self action:@selector(backButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_backButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10];
|
||||
}
|
||||
return _backButton;
|
||||
}
|
||||
|
||||
- (UILabel *)titleLabel {
|
||||
if (!_titleLabel) {
|
||||
_titleLabel = [[UILabel alloc] init];
|
||||
_titleLabel.textAlignment = NSTextAlignmentCenter;
|
||||
_titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightMedium];
|
||||
_titleLabel.text = @"贵族设置";
|
||||
_titleLabel.textColor = [UIColor whiteColor];
|
||||
}
|
||||
return _titleLabel;
|
||||
}
|
||||
|
||||
@end
|
@@ -23,6 +23,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
///贵族特权未点亮短描述颜色(0x8B7245)
|
||||
+ (UIColor *)noContainDescTextColor;
|
||||
|
||||
///贵族设置背景颜色(0x232017)
|
||||
+ (UIColor *)nobleSettingBgColor;
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -29,4 +29,9 @@
|
||||
return UIColorFromRGB(0x8B7245);
|
||||
}
|
||||
|
||||
///贵族设置背景颜色(0x232017)
|
||||
+ (UIColor *)nobleSettingBgColor {
|
||||
return UIColorFromRGB(0x232017);
|
||||
}
|
||||
|
||||
@end
|
||||
|
@@ -30,7 +30,7 @@
|
||||
#import "XPNobleCenterNavView.h"
|
||||
#import "XPNobleCenterMyNobleView.h"
|
||||
#import "XPWebViewController.h"
|
||||
#import "XPMineTeenagerViewController.h"
|
||||
#import "XPNobleSettingViewController.h"
|
||||
///P
|
||||
#import "XPNobleCenterPresenter.h"
|
||||
///model
|
||||
@@ -99,7 +99,7 @@
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewDidAppear:animated];
|
||||
[super viewWillAppear:animated];
|
||||
[self hideNavigationBar];
|
||||
}
|
||||
|
||||
@@ -342,6 +342,11 @@
|
||||
[self.navigationController pushViewController:webVC animated:YES];
|
||||
}
|
||||
|
||||
- (void)xPNobleCenterNavView:(XPNobleCenterNavView *)view didClickSettingButton:(UIButton *)sender {
|
||||
XPNobleSettingViewController * settingVC =[[XPNobleSettingViewController alloc] init];
|
||||
[self.navigationController pushViewController:settingVC animated:YES];
|
||||
}
|
||||
|
||||
#pragma mark - events
|
||||
- (void)onOpenNobleButtonClick:(UIButton *)button {
|
||||
[StatisticsServiceHelper trackEventWithKey:StatisticsServiceEventVipOpenClick];
|
||||
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPNobleSettingViewController.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/26.
|
||||
//
|
||||
|
||||
#import "MvpViewController.h"
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPNobleSettingViewController : MvpViewController
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,109 @@
|
||||
//
|
||||
// XPNobleSettingViewController.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/26.
|
||||
//
|
||||
|
||||
#import "XPNobleSettingViewController.h"
|
||||
#import "XPNobleSettingNavView.h"
|
||||
///Tool
|
||||
#import "ThemeColor+NobleCenter.h"
|
||||
#import "XPMacro.h"
|
||||
#import "UIButton+EnlargeTouchArea.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
|
||||
@interface XPNobleSettingViewController ()<XPNobleSettingNavViewDelegate>
|
||||
|
||||
@property (nonatomic, strong) XPNobleSettingNavView *navView;
|
||||
///标题
|
||||
@property (nonatomic, strong) UILabel *label;
|
||||
///开关
|
||||
@property (nonatomic, strong) UIButton *switchButton;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPNobleSettingViewController
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
self.title = @"贵族设置";
|
||||
self.view.backgroundColor = [ThemeColor nobleSettingBgColor];
|
||||
[self initSubView];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
|
||||
- (void)viewWillAppear:(BOOL)animated {
|
||||
[super viewWillAppear:animated];
|
||||
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
|
||||
}
|
||||
- (BOOL)isHiddenNavBar {
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)initSubView {
|
||||
[self.view addSubview:self.navView];
|
||||
[self.view addSubview:self.label];
|
||||
[self.view addSubview:self.switchButton];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.navView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.right.top.mas_equalTo(self.view);
|
||||
make.height.mas_equalTo(kNavigationHeight);
|
||||
}];
|
||||
[self.label mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(kNavigationHeight+8);
|
||||
make.left.mas_equalTo(15);
|
||||
make.height.mas_equalTo(21);
|
||||
}];
|
||||
[self.switchButton mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerY.mas_equalTo(self.label);
|
||||
make.right.mas_equalTo(-15);
|
||||
make.height.mas_equalTo(16);
|
||||
make.width.mas_equalTo(32);
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
#pragma mark - XPNobleSettingNavViewDelegate
|
||||
///点击了返回按钮
|
||||
- (void)xPNobleSettingNavView:(XPNobleSettingNavView *)view didClickBackButton:(UIButton *)sender {
|
||||
[self.navigationController popViewControllerAnimated:YES];
|
||||
}
|
||||
|
||||
- (void)switchButtonAction:(UIButton *)sender {
|
||||
|
||||
}
|
||||
|
||||
#pragma mark - getter
|
||||
- (XPNobleSettingNavView *)navView {
|
||||
if (!_navView) {
|
||||
_navView = [[XPNobleSettingNavView alloc] init];
|
||||
_navView.delegate = self;
|
||||
}
|
||||
return _navView;
|
||||
}
|
||||
|
||||
- (UILabel *)label {
|
||||
if (!_label) {
|
||||
_label = [[UILabel alloc] init];
|
||||
_label.text = @"隐身进房";
|
||||
_label.textColor = [UIColor whiteColor];
|
||||
_label.font = [UIFont systemFontOfSize:14];
|
||||
}
|
||||
return _label;
|
||||
}
|
||||
|
||||
- (UIButton *)switchButton {
|
||||
if (!_switchButton) {
|
||||
_switchButton = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||
[_switchButton setImage:[UIImage imageNamed:@"noble_setting_visible_close"] forState:UIControlStateNormal];
|
||||
[_switchButton setImage:[UIImage imageNamed:@"noble_setting_visible_open"] forState:UIControlStateSelected];
|
||||
[_switchButton addTarget:self action:@selector(switchButtonAction:) forControlEvents:UIControlEventTouchUpInside];
|
||||
[_switchButton setEnlargeEdgeWithTop:10 right:10 bottom:10 left:10];
|
||||
}
|
||||
return _switchButton;
|
||||
}
|
||||
@end
|
@@ -75,6 +75,7 @@
|
||||
extModel.fromNick = userInfo.fromNick;
|
||||
extModel.iosBubbleUrl = userInfo.iosBubbleUrl;
|
||||
extModel.androidBubbleUrl = userInfo.androidBubbleUrl;
|
||||
extModel.enterHide = userInfo.enterHide;
|
||||
|
||||
NSMutableDictionary *ext = [NSMutableDictionary dictionaryWithObject:extModel.model2dictionary forKey:[NSString stringWithFormat:@"%ld", userInfo.uid]];
|
||||
request.roomExt = [ext toJSONString];
|
||||
|
@@ -46,6 +46,7 @@
|
||||
#import "XPAcrossRoomPKPrizeView.h"
|
||||
#import "XPRoomViewController.h"
|
||||
#import "XPRoomAnchorRankBannerView.h"
|
||||
#import "XPRoomEnterHideTipView.h"
|
||||
|
||||
@interface XPRoomAnimationView ()<SVGAPlayerDelegate,NIMBroadcastManagerDelegate, XPRoomGiftBroadcastViewDelegate, HWDMP4PlayDelegate>
|
||||
///展示的不同层级
|
||||
@@ -232,6 +233,12 @@
|
||||
NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt;
|
||||
NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONObject objectForKey:message.from];
|
||||
XPMessageRemoteExtModel * extModel = [XPMessageRemoteExtModel modelWithJSON:dic];
|
||||
if (extModel.enterHide == NobleEnterHideStatus_Hide) {//隐身进房
|
||||
if ([message.from isEqualToString:[AccountInfoStorage instance].getUid]) {
|
||||
[self createEnterHideAnimation:dic];
|
||||
}
|
||||
return;
|
||||
}
|
||||
[self userEnterRoom:content ext:extModel];
|
||||
}
|
||||
}
|
||||
@@ -390,6 +397,35 @@
|
||||
|
||||
}
|
||||
|
||||
///自己的隐身进房提示
|
||||
- (void)createEnterHideAnimation:(NSDictionary *)dic {
|
||||
XPRoomEnterHideTipView *enterHideTipView = [[XPRoomEnterHideTipView alloc] initWithFrame:CGRectMake(KScreenWidth, (KScreenHeight - 48) * 0.5, KScreenWidth, 48)];
|
||||
[self.highLevleView addSubview:enterHideTipView];
|
||||
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewCenter];
|
||||
springAnimation.springSpeed = 12;
|
||||
springAnimation.springBounciness = 10.f;
|
||||
springAnimation.fromValue = [NSValue valueWithCGPoint:enterHideTipView.center];
|
||||
springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(enterHideTipView.frame.size.width / 2, enterHideTipView.center.y)];
|
||||
[springAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
|
||||
if (finished) {
|
||||
POPBasicAnimation *moveAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewCenter];
|
||||
moveAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(0, enterHideTipView.center.y)];
|
||||
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(-KScreenWidth/2, enterHideTipView.center.y)];
|
||||
moveAnimation.beginTime = CACurrentMediaTime() + 3;
|
||||
moveAnimation.duration = 0.5;
|
||||
moveAnimation.repeatCount = 1;
|
||||
moveAnimation.removedOnCompletion = YES;
|
||||
[moveAnimation setCompletionBlock:^(POPAnimation *anim, BOOL finished) {
|
||||
if (finished) {
|
||||
[enterHideTipView removeFromSuperview];
|
||||
}
|
||||
}];
|
||||
[enterHideTipView pop_addAnimation:moveAnimation forKey:@"moveOutAnimation"];
|
||||
}
|
||||
}];
|
||||
[enterHideTipView pop_addAnimation:springAnimation forKey:@"roomEnterTipUpspingOutAnimation"];
|
||||
}
|
||||
|
||||
#pragma mark - 座驾的动画
|
||||
- (void)receiveDriveCarEnterRoom:(AttachmentModel *)attatchment {
|
||||
if ([self isInSudGame]) {return;}
|
||||
|
@@ -0,0 +1,16 @@
|
||||
//
|
||||
// XPRoomEnterHideTipView.h
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/26.
|
||||
// 隐身进房提示
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
@interface XPRoomEnterHideTipView : UIView
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,94 @@
|
||||
//
|
||||
// XPRoomEnterHideTipView.m
|
||||
// xplan-ios
|
||||
//
|
||||
// Created by GreenLand on 2022/4/26.
|
||||
//
|
||||
|
||||
#import "XPRoomEnterHideTipView.h"
|
||||
///Third
|
||||
#import <Masonry/Masonry.h>
|
||||
///Tool
|
||||
#import "ThemeColor+Room.h"
|
||||
#import "ThemeColor.h"
|
||||
|
||||
@interface XPRoomEnterHideTipView()
|
||||
|
||||
///背景
|
||||
@property (nonatomic,strong) UIView *bgView;
|
||||
///icon
|
||||
@property (nonatomic,strong) UIImageView *iconImageView;
|
||||
///描述
|
||||
@property (nonatomic, strong) UILabel *descLabel;
|
||||
|
||||
@end
|
||||
|
||||
@implementation XPRoomEnterHideTipView
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
if (self = [super initWithFrame:frame]) {
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[super layoutSubviews];
|
||||
}
|
||||
|
||||
#pragma mark - Private Method
|
||||
- (void)initSubViews {
|
||||
[self addSubview:self.bgView];
|
||||
[self.bgView addSubview:self.iconImageView];
|
||||
[self.bgView addSubview:self.descLabel];
|
||||
}
|
||||
|
||||
- (void)initSubViewConstraints {
|
||||
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.centerY.mas_equalTo(self);
|
||||
make.width.mas_equalTo(190);
|
||||
make.height.mas_equalTo(48);
|
||||
}];
|
||||
[self.iconImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.bgView).mas_offset(12);
|
||||
make.centerY.mas_equalTo(self.bgView);
|
||||
make.width.height.mas_equalTo(32);
|
||||
}];
|
||||
[self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.mas_equalTo(self.iconImageView.mas_right).mas_offset(8);
|
||||
make.centerY.mas_equalTo(self.bgView);
|
||||
}];
|
||||
}
|
||||
|
||||
#pragma mark - Getters And Setters
|
||||
- (UIView *)bgView {
|
||||
if (!_bgView) {
|
||||
_bgView = [[UIView alloc] init];
|
||||
_bgView.backgroundColor = UIColorRGBAlpha(0x000000, 0.5);
|
||||
_bgView.layer.cornerRadius = 24;
|
||||
_bgView.layer.masksToBounds = YES;
|
||||
}
|
||||
return _bgView;
|
||||
}
|
||||
|
||||
- (UIImageView *)iconImageView {
|
||||
if (!_iconImageView) {
|
||||
_iconImageView = [[UIImageView alloc] init];
|
||||
_iconImageView.image = [UIImage imageNamed:@"room_enterRoom_hide"];
|
||||
}
|
||||
return _iconImageView;
|
||||
}
|
||||
|
||||
- (UILabel *)descLabel {
|
||||
if (!_descLabel) {
|
||||
UILabel *label = [[UILabel alloc] init];
|
||||
label.font = [UIFont systemFontOfSize:14];
|
||||
label.textColor = [UIColor whiteColor];
|
||||
label.text = @"你已隐身进入房间~";
|
||||
_descLabel = label;
|
||||
}
|
||||
return _descLabel;
|
||||
}
|
||||
|
||||
@end
|
@@ -42,6 +42,8 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, copy) NSString *androidBubbleUrl;
|
||||
///iOS房间公屏气泡
|
||||
@property (nonatomic, copy) NSString *iosBubbleUrl;
|
||||
///是否隐身进房 0:不隐身;1:隐身
|
||||
@property (nonatomic, assign) NobleEnterHideStatus enterHide;
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
@@ -309,11 +309,20 @@
|
||||
}
|
||||
return attribute;
|
||||
} else if(attachment.second == Custom_Message_Sub_Update_RoomInfo_AnimateEffect) {
|
||||
NSDictionary * dic = attachment.data[@"roomInfo"];
|
||||
if (dic.allKeys.count <=0) {
|
||||
dic = attachment.data;
|
||||
}
|
||||
RoomInfoModel * roomInfo = [RoomInfoModel modelWithDictionary:dic];
|
||||
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
||||
[attribute appendAttributedString:[self createTextAttribute:@"消息:" color:[ThemeColor messageNickColor] font:kRoomMessageDefalutFont]];
|
||||
if (roomInfo.hasAnimationEffect) {
|
||||
[attribute appendAttributedString:[self createTextAttribute:@"管理员已开启房间内礼物特效" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
} else {
|
||||
[attribute appendAttributedString:[self createTextAttribute:@"管理员已关闭房间内礼物特效,点击底部" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
[attribute appendAttributedString:[self createImageAttribute:[UIImage imageNamed:@"room_menu_more"]]];
|
||||
[attribute appendAttributedString:[self createTextAttribute:@"图标即可开启" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
||||
}
|
||||
return attribute;
|
||||
} else if (attachment.second == Custom_Message_Sub_Update_RoomInfo_CleanScreen) {
|
||||
NSNumber *roleType = attachment.data[@"roleType"];
|
||||
|
@@ -25,6 +25,7 @@
|
||||
#import "RoomInfoModel.h"
|
||||
#import "AttachmentModel.h"
|
||||
#import "RoomFaceSendInfoModel.h"
|
||||
#import "XPMessageRemoteExtModel.h"
|
||||
///View
|
||||
#import "XPRoomMessageTableViewCell.h"
|
||||
#import "XPRoomMessageHeaderView.h"
|
||||
@@ -257,6 +258,14 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
return NO;
|
||||
}
|
||||
|
||||
///判断是否隐身进房
|
||||
- (BOOL)handleHideEnter:(NIMMessage *)message {
|
||||
NIMMessageChatroomExtension * messageExt = (NIMMessageChatroomExtension *)message.messageExt;
|
||||
NSDictionary * dic = [(NSDictionary *)messageExt.roomExt.toJSONObject objectForKey:message.from];
|
||||
XPMessageRemoteExtModel * extModel = [XPMessageRemoteExtModel modelWithJSON:dic];
|
||||
return extModel.enterHide;
|
||||
}
|
||||
|
||||
#pragma mark - 添加数据并且做自动滚动
|
||||
///添加信息
|
||||
- (void)addRoomMessage:(NIMMessage *)message {
|
||||
@@ -578,18 +587,24 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
|
||||
//执行插入动画并滚动
|
||||
[self scrollToBottom:YES];
|
||||
}
|
||||
|
||||
BOOL hideEnter = [self handleHideEnter:message];
|
||||
if (!hideEnter) {
|
||||
///插入进房消息及房间公告提示
|
||||
[self addRoomMessage:message];
|
||||
}
|
||||
if (!roomInfo.hasAnimationEffect) {
|
||||
[self roomInfoNoGiftAnimationMessage:message];
|
||||
}
|
||||
[self createUserEnterRoomAddRoomtopicMessage];
|
||||
}];
|
||||
} else {
|
||||
BOOL hideEnter = [self handleHideEnter:message];
|
||||
if (!hideEnter) {
|
||||
///插入进房消息及房间公告提示
|
||||
[self addRoomMessage:message];
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if(content.eventType == NIMChatroomEventTypeInfoUpdated) {
|
||||
if (roomInfo.isCloseScreen) {return;}
|
||||
if (roomInfo.datingState == RoomDatingStateChangeType_Open) {
|
||||
|
@@ -47,6 +47,8 @@
|
||||
@property (nonatomic,strong) UILabel *leaveLabel;
|
||||
///礼物值
|
||||
@property (nonatomic,strong) MicroGiftValueView *giftValueView;
|
||||
///防被踢
|
||||
@property (nonatomic, strong) UIImageView *forbidKickView;
|
||||
///麦序的信息
|
||||
@property (nonatomic,strong) MicroQueueModel *microModel;
|
||||
///麦位的用户信息
|
||||
@@ -100,6 +102,7 @@
|
||||
[self addSubview:self.avatarImageView];
|
||||
[self addSubview:self.headWearImageView];
|
||||
[self addSubview:self.micStateImageView];
|
||||
[self addSubview:self.forbidKickView];
|
||||
[self addSubview:self.giftValueView];
|
||||
[self addSubview:self.faceImageView];
|
||||
|
||||
@@ -132,6 +135,10 @@
|
||||
[self.micStateImageView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.edges.mas_equalTo(self.avatarImageView);
|
||||
}];
|
||||
[self.forbidKickView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.left.bottom.mas_equalTo(self.avatarImageView);
|
||||
make.width.height.mas_equalTo(18);
|
||||
}];
|
||||
|
||||
[self.stackView mas_makeConstraints:^(MASConstraintMaker *make) {
|
||||
make.centerX.mas_equalTo(self);
|
||||
@@ -480,6 +487,15 @@
|
||||
return _micStateImageView;
|
||||
}
|
||||
|
||||
- (UIImageView *)forbidKickView {
|
||||
if (!_forbidKickView) {
|
||||
_forbidKickView = [[UIImageView alloc] init];
|
||||
_forbidKickView.image = [UIImage imageNamed:@"room_position_ forbid_kicked"];
|
||||
_forbidKickView.hidden = YES;
|
||||
}
|
||||
return _forbidKickView;
|
||||
}
|
||||
|
||||
- (MicroWaveView *)animationView {
|
||||
if (!_animationView) {
|
||||
_animationView = [[MicroWaveView alloc] init];
|
||||
|
@@ -751,6 +751,34 @@
|
||||
break;
|
||||
case UserCardItemType_KickOut:
|
||||
{
|
||||
// 1、判断是否为防被踢用户
|
||||
if (self.targetUserInfo.userVipInfoVO.vipLevel > 6) {
|
||||
//2、判断是否为管理员操作
|
||||
if (self.cardInfo.roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue) {
|
||||
[self showErrorToast:@"该用户为神皇贵族,只有房主才可以踢出哦~"];
|
||||
} else {//房主操作
|
||||
NSString *message = [NSString stringWithFormat:@"该用户为神皇贵族\n确认是否要将其踢出?"];
|
||||
TTAlertConfig *config = [[TTAlertConfig alloc] init];
|
||||
config.title = @"";
|
||||
config.message = message;
|
||||
[TTPopup alertWithConfig:config confirmHandler:^{
|
||||
if ([self isInSudGame:self.cardInfo.uid]) {
|
||||
NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"];
|
||||
TTAlertConfig *config = [[TTAlertConfig alloc] init];
|
||||
config.title = @"";
|
||||
config.message = message;
|
||||
[TTPopup alertWithConfig:config confirmHandler:^{
|
||||
[self.presenter makeKickUser:self.cardInfo.uid roomId:roomId];
|
||||
} cancelHandler:^{
|
||||
}];
|
||||
} else {
|
||||
[self.presenter makeKickUser:self.cardInfo.uid roomId:roomId];
|
||||
}
|
||||
} cancelHandler:^{
|
||||
}];
|
||||
}
|
||||
return;
|
||||
}
|
||||
if ([self isInSudGame:self.cardInfo.uid]) {
|
||||
NSString *message = [NSString stringWithFormat:@"游戏模式下默认该玩家退出游戏是否要将此用户踢出房间?"];
|
||||
TTAlertConfig *config = [[TTAlertConfig alloc] init];
|
||||
|