This commit is contained in:
2025-11-17 16:16:38 +08:00
parent d849b201ca
commit f366a4aa6c
20 changed files with 585 additions and 1 deletions

View File

@@ -25,6 +25,7 @@
04122FB02EC73C0100EF7AB3 /* KBVipReviewItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122FAF2EC73C0100EF7AB3 /* KBVipReviewItemCell.m */; };
04122FB32EC73C0100EF7AB3 /* KBVipReviewListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04122FB22EC73C0100EF7AB3 /* KBVipReviewListCell.m */; };
04286A002ECAEF2B00CE730C /* KBMoneyBtn.m in Sources */ = {isa = PBXBuildFile; fileRef = 042869FE2ECAEF2B00CE730C /* KBMoneyBtn.m */; };
04286A032ECB0A1600CE730C /* KBSexSelVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 04286A022ECB0A1600CE730C /* KBSexSelVC.m */; };
043FBCD22EAF97630036AFE1 /* KBPermissionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 04C6EAE12EAF940F0089C901 /* KBPermissionViewController.m */; };
0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */; };
0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; };
@@ -231,6 +232,8 @@
04122FB22EC73C0100EF7AB3 /* KBVipReviewListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBVipReviewListCell.m; sourceTree = "<group>"; };
042869FD2ECAEF2B00CE730C /* KBMoneyBtn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBMoneyBtn.h; sourceTree = "<group>"; };
042869FE2ECAEF2B00CE730C /* KBMoneyBtn.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBMoneyBtn.m; sourceTree = "<group>"; };
04286A012ECB0A1600CE730C /* KBSexSelVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSexSelVC.h; sourceTree = "<group>"; };
04286A022ECB0A1600CE730C /* KBSexSelVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSexSelVC.m; sourceTree = "<group>"; };
0459D1B22EBA284C00F2D189 /* KBSkinCenterVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinCenterVC.h; sourceTree = "<group>"; };
0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinCenterVC.m; sourceTree = "<group>"; };
0459D1B52EBA287900F2D189 /* KBSkinManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinManager.h; sourceTree = "<group>"; };
@@ -1203,6 +1206,8 @@
04FC95E02EB20AD1007BD342 /* VC */ = {
isa = PBXGroup;
children = (
04286A012ECB0A1600CE730C /* KBSexSelVC.h */,
04286A022ECB0A1600CE730C /* KBSexSelVC.m */,
04FC95DB2EB202A3007BD342 /* KBGuideVC.h */,
04FC95DC2EB202A3007BD342 /* KBGuideVC.m */,
);
@@ -1624,6 +1629,7 @@
04890A052EC0BBBB00FABA60 /* KBCategoryTitleImageView.m in Sources */,
04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */,
04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */,
04286A032ECB0A1600CE730C /* KBSexSelVC.m in Sources */,
047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */,
04122F912EC73AF700EF7AB3 /* KBVipPay.m in Sources */,
0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */,

View File

@@ -21,6 +21,7 @@
#import "KBLoginPopView.h"
#import "IAPVerifyTransactionObj.h"
#import "FGIAPManager.h"
#import "KBSexSelVC.h"
// bundle id target
// PRODUCT_BUNDLE_IDENTIFIER
// CustomKeyboard target com.loveKey.nyx.CustomKeyboard
@@ -32,11 +33,21 @@ static NSString * const kKBKeyboardExtensionBundleId = @"com.loveKey.nyx.CustomK
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 1.
[[FGIAPManager shared] setConfigureWith:[IAPVerifyTransactionObj new]];
// Skip TabBar
BOOL hasShownSexVC = [[NSUserDefaults standardUserDefaults] boolForKey:KBSexSelectShownKey];
if (hasShownSexVC) {
[self setupRootVC];
} else {
[self setupSexSelectRootVC];
}
// 访
[KBNetworkManager shared].enabled = YES;
///
[self getNetJudge];
///
[self kb_fireStartupNetworkRequest];
#if !DEBUG
/// Bugly
@@ -61,6 +72,24 @@ static NSString * const kKBKeyboardExtensionBundleId = @"com.loveKey.nyx.CustomK
self.window.rootViewController = vc;
}
///
- (void)setupSexSelectRootVC {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
KBSexSelVC *sexVC = [KBSexSelVC new];
__weak typeof(self) weakSelf = self;
sexVC.didFinishSelectBlock = ^{
// TabBar
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:KBSexSelectShownKey];
[[NSUserDefaults standardUserDefaults] synchronize];
// TabBar
[weakSelf setupRootVC];
};
self.window.rootViewController = sexVC;
}
#pragma mark - Permission presentation
@@ -172,6 +201,24 @@ static NSString * const kKBKeyboardExtensionBundleId = @"com.loveKey.nyx.CustomK
// KBGuideVC
}
/// 使
/// 访使
- (void)kb_fireStartupNetworkRequest {
NSURL *url = [NSURL URLWithString:@"https://www.apple.com"];
if (!url) { return; }
NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:config];
NSURLSessionDataTask *task = [session dataTaskWithURL:url
completionHandler:^(NSData * _Nullable data,
NSURLResponse * _Nullable response,
NSError * _Nullable error) {
// 线
dispatch_async(dispatch_get_main_queue(), ^{
});
}];
[task resume];
}
-(void)getNetJudge {

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "sex_jiantou_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "sex_jiantou_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "sex_nan_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "sex_nan_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "sex_nv_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "sex_nv_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "sex_otherbig_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "sex_otherbig_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "sex_othersmall_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "sex_othersmall_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,22 @@
//
// KBSexSelVC.h
// keyBoard
//
// Created by Mac on 2025/11/17.
// 性别选择
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
/// 性别选择页
/// 说明:只负责展示静态 UI 与首次进入时的引导。
@interface KBSexSelVC : BaseViewController
/// 用户点击「Skip」或底部确认按钮后的回调。
/// AppDelegate 通过该回调切换到主 TabBar。
@property (nonatomic, copy, nullable) void (^didFinishSelectBlock)(void);
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,396 @@
//
// KBSexSelVC.m
// keyBoard
//
// Created by Mac on 2025/11/17.
// UI
#import "KBSexSelVC.h"
@interface KBSexSelVC ()
//
@property (nonatomic, strong) UIView *topBgView; //
@property (nonatomic, strong) UIImageView *arrowImageView; //
@property (nonatomic, strong) UILabel *titleLabel; //
@property (nonatomic, strong) UIView *titleUnderlineView; // 线
@property (nonatomic, strong) UIButton *skipButton; //
// -
@property (nonatomic, strong) UIView *maleCardView; //
@property (nonatomic, strong) UIImageView *maleImageView; //
@property (nonatomic, strong) UILabel *maleLabel; // Male
// -
@property (nonatomic, strong) UIView *femaleCardView; //
@property (nonatomic, strong) UIImageView *femaleImageView; //
@property (nonatomic, strong) UILabel *femaleLabel; // Female
// -
@property (nonatomic, strong) UIView *otherCardView; //
@property (nonatomic, strong) UIImageView *otherLeftImageView;//
@property (nonatomic, strong) UIImageView *otherRightImageView;//
@property (nonatomic, strong) UILabel *otherLabel; // The Third Gender
//
@property (nonatomic, strong) UIButton *confirmButton; // Turn On The Keyboard
//
@property (nonatomic, strong) CAGradientLayer *topGradientLayer;
@end
@implementation KBSexSelVC
- (void)viewDidLoad {
[super viewDidLoad];
// 使
self.kb_enableCustomNavBar = NO;
self.view.backgroundColor = [UIColor whiteColor];
[self setupUI];
}
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
//
self.topGradientLayer.frame = self.topBgView.bounds;
}
#pragma mark - Setup UI
/// UI
- (void)setupUI {
//
[self.view addSubview:self.topBgView];
[self.topBgView addSubview:self.arrowImageView];
[self.topBgView addSubview:self.titleLabel];
[self.topBgView addSubview:self.titleUnderlineView];
[self.view addSubview:self.skipButton];
//
[self.view addSubview:self.maleCardView];
[self.maleCardView addSubview:self.maleImageView];
[self.maleCardView addSubview:self.maleLabel];
[self.view addSubview:self.femaleCardView];
[self.femaleCardView addSubview:self.femaleImageView];
[self.femaleCardView addSubview:self.femaleLabel];
[self.view addSubview:self.otherCardView];
[self.otherCardView addSubview:self.otherLeftImageView];
[self.otherCardView addSubview:self.otherRightImageView];
[self.otherCardView addSubview:self.otherLabel];
//
[self.view addSubview:self.confirmButton];
//
[self.topBgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.view);
make.top.equalTo(self.view);
make.height.mas_equalTo(240);
}];
//
[self.skipButton mas_makeConstraints:^(MASConstraintMaker *make) {
if (@available(iOS 11.0, *)) {
make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop).offset(8);
} else {
make.top.equalTo(self.view).offset(30);
}
make.right.equalTo(self.view).offset(-16);
make.height.mas_equalTo(32);
make.width.mas_greaterThanOrEqualTo(64);
}];
//
[self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view).offset(28);
make.bottom.equalTo(self.topBgView.mas_bottom).offset(-48);
}];
[self.titleUnderlineView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.titleLabel.mas_left);
make.right.lessThanOrEqualTo(self.topBgView).offset(-40);
make.top.equalTo(self.titleLabel.mas_bottom).offset(8);
make.height.mas_equalTo(4);
}];
[self.arrowImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.topBgView).offset(-40);
make.top.equalTo(self.topBgView).offset(40);
make.width.mas_equalTo(90);
make.height.mas_equalTo(90);
}];
//
[self.maleCardView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.view).offset(20);
make.right.equalTo(self.view).offset(-20);
make.top.equalTo(self.topBgView.mas_bottom).offset(-10); //
make.height.mas_equalTo(128);
}];
[self.maleImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.maleCardView).offset(12);
make.centerY.equalTo(self.maleCardView);
make.width.mas_equalTo(110);
make.height.mas_equalTo(110);
}];
[self.maleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerY.equalTo(self.maleCardView);
make.right.equalTo(self.maleCardView).offset(-24);
}];
//
[self.femaleCardView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.maleCardView);
make.top.equalTo(self.maleCardView.mas_bottom).offset(24);
make.height.mas_equalTo(110);
}];
[self.femaleImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.femaleCardView).offset(-12);
make.centerY.equalTo(self.femaleCardView);
make.width.mas_equalTo(110);
make.height.mas_equalTo(110);
}];
[self.femaleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.femaleCardView).offset(24);
make.centerY.equalTo(self.femaleCardView);
}];
//
[self.otherCardView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.maleCardView);
make.top.equalTo(self.femaleCardView.mas_bottom).offset(24);
make.height.mas_equalTo(96);
}];
[self.otherLeftImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(self.otherCardView).offset(16);
make.centerY.equalTo(self.otherCardView);
make.width.mas_equalTo(54);
make.height.mas_equalTo(54);
}];
[self.otherRightImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.otherCardView).offset(-16);
make.centerY.equalTo(self.otherCardView);
make.width.mas_equalTo(54);
make.height.mas_equalTo(54);
}];
[self.otherLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.otherCardView);
make.centerY.equalTo(self.otherCardView);
}];
//
[self.confirmButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.equalTo(self.maleCardView);
make.height.mas_equalTo(54);
if (@available(iOS 11.0, *)) {
make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom).offset(-24);
} else {
make.bottom.equalTo(self.view).offset(-24);
}
}];
}
#pragma mark - Actions
///
- (void)onSkipTapped {
// AppDelegate TabBar
if (self.didFinishSelectBlock) {
self.didFinishSelectBlock();
}
[[NSUserDefaults standardUserDefaults] setBool:true forKey:KBSexSelectShownKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
///
- (void)onConfirmTapped {
// AppDelegate TabBar
if (self.didFinishSelectBlock) {
self.didFinishSelectBlock();
}
[[NSUserDefaults standardUserDefaults] setBool:true forKey:KBSexSelectShownKey];
[[NSUserDefaults standardUserDefaults] synchronize];
}
#pragma mark - Lazy UI
- (UIView *)topBgView {
if (!_topBgView) {
_topBgView = [UIView new];
// 绿
CAGradientLayer *layer = [CAGradientLayer layer];
layer.colors = @[
(__bridge id)[UIColor colorWithHex:0xE4FFF6].CGColor,
(__bridge id)[UIColor colorWithHex:0xFFFFFF].CGColor
];
layer.startPoint = CGPointMake(0.5, 0.0);
layer.endPoint = CGPointMake(0.5, 1.0);
[_topBgView.layer insertSublayer:layer atIndex:0];
self.topGradientLayer = layer;
}
return _topBgView;
}
- (UIImageView *)arrowImageView {
if (!_arrowImageView) {
_arrowImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sex_jiantou_icon"]];
_arrowImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _arrowImageView;
}
- (UILabel *)titleLabel {
if (!_titleLabel) {
_titleLabel = [UILabel new];
_titleLabel.text = @"Please Select Your Gender";
_titleLabel.font = [UIFont systemFontOfSize:22 weight:UIFontWeightSemibold];
_titleLabel.textColor = [UIColor colorWithHex:KBBlackValue];
_titleLabel.numberOfLines = 1;
}
return _titleLabel;
}
- (UIView *)titleUnderlineView {
if (!_titleUnderlineView) {
_titleUnderlineView = [UIView new];
_titleUnderlineView.backgroundColor = [UIColor colorWithHex:KBColorValue];
_titleUnderlineView.layer.cornerRadius = 2.0;
_titleUnderlineView.layer.masksToBounds = YES;
}
return _titleUnderlineView;
}
- (UIButton *)skipButton {
if (!_skipButton) {
_skipButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_skipButton setTitle:@"Skip" forState:UIControlStateNormal];
[_skipButton setTitleColor:[UIColor colorWithHex:KBBlackValue] forState:UIControlStateNormal];
_skipButton.titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium];
_skipButton.backgroundColor = [UIColor colorWithHex:0xE9F7F4];
_skipButton.layer.cornerRadius = 16;
_skipButton.layer.masksToBounds = YES;
[_skipButton addTarget:self action:@selector(onSkipTapped) forControlEvents:UIControlEventTouchUpInside];
}
return _skipButton;
}
- (UIView *)maleCardView {
if (!_maleCardView) {
_maleCardView = [UIView new];
_maleCardView.backgroundColor = [UIColor whiteColor];
_maleCardView.layer.cornerRadius = 24.0;
_maleCardView.layer.masksToBounds = YES;
_maleCardView.layer.borderWidth = 2.0;
_maleCardView.layer.borderColor = [UIColor colorWithHex:KBColorValue].CGColor;
}
return _maleCardView;
}
- (UIImageView *)maleImageView {
if (!_maleImageView) {
_maleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sex_nan_icon"]];
_maleImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _maleImageView;
}
- (UILabel *)maleLabel {
if (!_maleLabel) {
_maleLabel = [UILabel new];
_maleLabel.text = @"Male";
_maleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightSemibold];
_maleLabel.textColor = [UIColor colorWithHex:KBBlackValue];
}
return _maleLabel;
}
- (UIView *)femaleCardView {
if (!_femaleCardView) {
_femaleCardView = [UIView new];
_femaleCardView.backgroundColor = [UIColor colorWithHex:0xF6F8FC];
_femaleCardView.layer.cornerRadius = 24.0;
_femaleCardView.layer.masksToBounds = YES;
}
return _femaleCardView;
}
- (UIImageView *)femaleImageView {
if (!_femaleImageView) {
_femaleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sex_nv_icon"]];
_femaleImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _femaleImageView;
}
- (UILabel *)femaleLabel {
if (!_femaleLabel) {
_femaleLabel = [UILabel new];
_femaleLabel.text = @"Female";
_femaleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular];
_femaleLabel.textColor = [UIColor colorWithHex:KBBlackValue];
}
return _femaleLabel;
}
- (UIView *)otherCardView {
if (!_otherCardView) {
_otherCardView = [UIView new];
_otherCardView.backgroundColor = [UIColor colorWithHex:0xFDFDFD];
_otherCardView.layer.cornerRadius = 24.0;
_otherCardView.layer.masksToBounds = YES;
}
return _otherCardView;
}
- (UIImageView *)otherLeftImageView {
if (!_otherLeftImageView) {
_otherLeftImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sex_othersmall_icon"]];
_otherLeftImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _otherLeftImageView;
}
- (UIImageView *)otherRightImageView {
if (!_otherRightImageView) {
_otherRightImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sex_otherbig_icon"]];
_otherRightImageView.contentMode = UIViewContentModeScaleAspectFit;
}
return _otherRightImageView;
}
- (UILabel *)otherLabel {
if (!_otherLabel) {
_otherLabel = [UILabel new];
_otherLabel.text = @"The Third Gender";
_otherLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular];
_otherLabel.textColor = [UIColor colorWithHex:KBBlackValue];
}
return _otherLabel;
}
- (UIButton *)confirmButton {
if (!_confirmButton) {
_confirmButton = [UIButton buttonWithType:UIButtonTypeCustom];
[_confirmButton setTitle:@"Turn On The Keyboard" forState:UIControlStateNormal];
[_confirmButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
_confirmButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold];
_confirmButton.backgroundColor = [UIColor blackColor];
_confirmButton.layer.cornerRadius = 27.0;
_confirmButton.layer.masksToBounds = YES;
[_confirmButton addTarget:self action:@selector(onConfirmTapped) forControlEvents:UIControlEventTouchUpInside];
}
return _confirmButton;
}
@end

View File

@@ -59,6 +59,9 @@
#define KB_UL_LOGIN KB_UL_BASE @"/login"
#define KB_UL_SETTINGS KB_UL_BASE @"/settings"
/// 第一次安装
#define KBSexSelectShownKey @"kKBSexSelectShownKey"
/// UI 尺寸/设备宏
// 屏幕尺寸
#define KB_SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width)