Files
real-e-party-iOS/YuMi/E-P/Login/Models/EPLoginConfig.swift.backup
2025-10-17 14:52:29 +08:00

306 lines
9.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// EPLoginConfig.swift
// YuMi
//
// Created by AI on 2025-01-27.
// 统一配置文件 - 消除硬编码
//
import UIKit
/// 登录模块统一配置
struct EPLoginConfig {
// MARK: - Layout 布局尺寸
struct Layout {
/// 标准按钮宽度
static let buttonWidth: CGFloat = 294
/// 标准按钮高度
static let buttonHeight: CGFloat = 46
/// 登录按钮高度
static let loginButtonHeight: CGFloat = 56
/// 登录按钮间距
static let loginButtonSpacing: CGFloat = 24
/// 登录按钮左右边距
static let loginButtonHorizontalPadding: CGFloat = 30
/// 输入框/按钮统一高度
static let uniformHeight: CGFloat = 56
/// 输入框/按钮统一左右边距
static let uniformHorizontalPadding: CGFloat = 29
/// 输入框/按钮统一圆角
static let uniformCornerRadius: CGFloat = 28
/// 标准圆角半径(按钮/输入框)
static let cornerRadius: CGFloat = 23
/// Logo 尺寸
static let logoHeight: CGFloat = 400
/// Logo 距离顶部的距离
static let logoTopOffset: CGFloat = 80
/// E-PARTY 标题字号
static let epartiTitleFontSize: CGFloat = 56
/// E-PARTY 标题距离 view leading
static let epartiTitleLeading: CGFloat = 40
/// E-PARTY 标题距离 logoImage bottom 的偏移(负值表示向上)
static let epartiTitleBottomOffset: CGFloat = -30
/// 输入框之间的垂直间距
static let inputVerticalSpacing: CGFloat = 16
/// 输入框距离标题的距离
static let inputTitleSpacing: CGFloat = 60
/// 按钮距离输入框的距离
static let buttonTopSpacing: CGFloat = 40
/// 页面左右边距
static let horizontalPadding: CGFloat = 40
/// 紧凑左右边距
static let compactHorizontalPadding: CGFloat = 16
/// 标题字体大小
static let titleFontSize: CGFloat = 28
/// 按钮字体大小
static let buttonFontSize: CGFloat = 16
/// 输入框字体大小
static let inputFontSize: CGFloat = 14
/// 小字体大小(提示文字等)
static let smallFontSize: CGFloat = 12
/// 图标尺寸
static let iconSize: CGFloat = 24
/// 登录按钮图标尺寸
static let loginButtonIconSize: CGFloat = 30
/// 登录按钮图标左边距(距离白色背景)
static let loginButtonIconLeading: CGFloat = 33
/// 图标左边距
static let iconLeading: CGFloat = 15
/// 图标与文字间距
static let iconTextSpacing: CGFloat = 12
/// Checkbox 尺寸
static let checkboxSize: CGFloat = 18
/// 返回按钮尺寸
static let backButtonSize: CGFloat = 44
/// Feedback 按钮高度
static let feedbackButtonHeight: CGFloat = 22
static let feedbackButtonCornerRadius: CGFloat = 10.5
/// 输入框高度
static let inputHeight: CGFloat = 56
/// 输入框圆角
static let inputCornerRadius: CGFloat = 28
/// 输入框左右内边距
static let inputHorizontalPadding: CGFloat = 24
/// 输入框 icon 尺寸
static let inputIconSize: CGFloat = 20
/// 输入框边框宽度
static let inputBorderWidth: CGFloat = 1
/// 验证码按钮宽度
static let codeButtonWidth: CGFloat = 102
/// 验证码按钮高度
static let codeButtonHeight: CGFloat = 38
}
// MARK: - Colors 颜色主题
struct Colors {
/// 主题色(按钮背景)
static let primary = UIColor.systemPurple
/// 背景色
static let background = UIColor.white
static let backgroundTransparent = UIColor.white.withAlphaComponent(0.5)
/// 文字颜色
static let text = UIColor.darkText
static let textSecondary = UIColor.darkGray
static let textLight = UIColor.white
/// 图标颜色
static let icon = UIColor.darkGray
static let iconDisabled = UIColor.gray
/// 输入框颜色
static let inputBackground = UIColor.white.withAlphaComponent(0.1)
static let inputText = UIColor(red: 0x1F/255.0, green: 0x1B/255.0, blue: 0x4F/255.0, alpha: 1.0)
static let inputBorder = UIColor.white
static let inputBorderFocused = UIColor.systemPurple
/// 渐变色Login/Confirm按钮
static let gradientStart = UIColor(red: 0xF8/255.0, green: 0x54/255.0, blue: 0xFC/255.0, alpha: 1.0) // #F854FC
static let gradientEnd = UIColor(red: 0x50/255.0, green: 0x0F/255.0, blue: 0xFF/255.0, alpha: 1.0) // #500FFF
/// 验证码按钮颜色
static let codeButtonBackground = UIColor(red: 0x91/255.0, green: 0x68/255.0, blue: 0xFA/255.0, alpha: 1.0)
/// 按钮状态颜色
static let buttonEnabled = UIColor.systemPurple
static let buttonDisabled = UIColor.lightGray
/// 错误提示色
static let error = UIColor.systemRed
static let success = UIColor.systemGreen
/// 链接颜色
static let link = UIColor.black
static let linkUnderline = UIColor.black
}
// MARK: - Animation 动画配置
struct Animation {
/// 标准动画时长
static let duration: TimeInterval = 0.3
/// 短动画时长
static let shortDuration: TimeInterval = 0.15
/// 长动画时长
static let longDuration: TimeInterval = 0.5
/// 弹簧动画阻尼
static let springDamping: CGFloat = 0.75
/// 弹簧动画初速度
static let springVelocity: CGFloat = 0.5
/// 按钮点击缩放比例
static let buttonPressScale: CGFloat = 0.95
/// 错误抖动距离
static let shakeOffset: CGFloat = 10
/// 错误抖动次数
static let shakeCount: Int = 3
}
// MARK: - Validation 验证规则
struct Validation {
/// 密码最小长度
static let passwordMinLength = 6
/// 密码最大长度
static let passwordMaxLength = 16
/// 验证码长度
static let codeLength = 6
/// 手机号最小长度
static let phoneMinLength = 10
/// 手机号最大长度
static let phoneMaxLength = 15
/// 邮箱正则表达式
static let emailRegex = "[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}"
/// 手机号正则表达式
static let phoneRegex = "^[0-9]{10,15}$"
}
// MARK: - Timing 时间配置
struct Timing {
/// 验证码倒计时秒数
static let codeCountdownSeconds = 60
/// Toast 显示时长
static let toastDuration: TimeInterval = 2.0
/// 加载超时时间
static let requestTimeout: TimeInterval = 30.0
}
// MARK: - API 接口配置
struct API {
/// Client Secret
static let clientSecret = "uyzjdhds"
/// Client ID
static let clientId = "erban-client"
/// Grant Type
static let grantType = "password"
/// 版本号
static let version = "1"
/// 验证码类型:登录
static let codeTypeLogin = 1
/// 验证码类型:找回密码
static let codeTypeReset = 2
}
// MARK: - UserDefaults Keys
struct Keys {
/// 隐私协议已同意
static let policyAgreed = "HadAgreePrivacy"
/// 首次启动标识
static let hasLaunchedBefore = "HasLaunchedBefore"
}
// MARK: - Images 图片资源名称
struct Images {
/// 背景图
static let background = "vc_bg"
/// Logo 背景图
static let loginBg = "login_bg"
/// 登录按钮图标 - ID
static let iconLoginId = "icon_login_id"
/// 登录按钮图标 - Email
static let iconLoginEmail = "icon_login_email"
/// 图标 - 用户
static let iconPerson = "person.circle"
static let iconPersonFill = "person"
/// 图标 - 邮箱
static let iconEmail = "envelope.circle"
static let iconEmailFill = "envelope"
/// 图标 - 手机
static let iconPhone = "phone.circle"
static let iconPhoneFill = "phone"
/// 图标 - Apple
static let iconApple = "apple.logo"
/// 图标 - 锁
static let iconLock = "lock"
/// 图标 - 数字
static let iconNumber = "number"
/// 密码可见性图标
static let iconPasswordSee = "icon_password_see"
static let iconPasswordUnsee = "icon_password_unsee"
/// 图标 - 返回
static let iconBack = "chevron.left"
/// 图标 - 眼睛(隐藏)
static let iconEyeSlash = "eye.slash"
/// 图标 - 眼睛(显示)
static let iconEye = "eye"
/// Checkbox - 未选中
static let checkboxEmpty = "circle"
/// Checkbox - 已选中
static let checkboxFilled = "checkmark.circle"
}
// MARK: - Localized Strings Keys
struct LocalizedKeys {
/// ID 登录
static let idLogin = "1.0.37_text_26"
/// 邮箱登录
static let emailLogin = "20.20.51_text_1"
/// 隐私协议完整文本
static let policyFullText = "XPLoginViewController6"
/// 用户协议
static let userAgreement = "XPLoginViewController7"
/// 隐私政策
static let privacyPolicy = "XPLoginViewController9"
/// 反馈
static let feedback = "XPMineFeedbackViewController0"
}
}