一个基于 Swift UIKit 的 iOS 应用脚手架项目,提供了完整的项目架构和常用功能模块。
CoreScaffold 是一个现代化的 iOS 应用开发脚手架,采用 Swift UIKit 框架构建,集成了常用的第三方库和最佳实践,帮助开发者快速启动新项目。
- Swift UIKit - 主要 UI 框架
- Core Data - 本地数据持久化
- Keychain Services - 敏感数据存储
- Apple Push Notification Service - 推送通知
- Localizable.strings - 多语言本地化
pod 'Moya', '15.0' # 网络请求封装
pod 'SnapKit' # 自动布局
pod 'MJRefresh' # 下拉刷新
pod 'Kingfisher' # 图片缓存
pod 'MotionToastView' # Toast 提示
pod 'IQKeyboardManagerSwift' # 键盘管理
pod 'UIImageColors' # 图片颜色提取
pod 'SkeletonView' # 骨架屏
pod 'Gradients' # 渐变效果
pod 'SpreadsheetView' # 表格视图
pod 'SwiftSignalRClient' # SignalR 客户端
pod 'JXSegmentedView' # 分段控制器
pod 'MobileVLCKit' # 视频播放
pod 'WechatOpenSDK' # 微信 SDK
pod 'SVGKit' # SVG 支持
pod 'JPush' # 极光推送- AnyCodable - 类型擦除的 Codable
- LiveKit Client SDK - 实时音视频
CoreScaffold/
├── App/ # 应用入口和配置
│ ├── AppDelegate.swift # 应用代理
│ ├── SceneDelegate.swift # 场景代理
│ ├── NavigationController.swift # 导航控制器
│ └── TabbarViewController.swift # 标签栏控制器
├── Modules/ # 功能模块
│ ├── view/ # 自定义视图
│ └── viewcontroller/ # 视图控制器
├── Networking/ # 网络层
│ ├── Api.swift # API 接口定义
│ ├── Network.swift # 网络请求封装
│ └── Plugin.swift # Moya 插件
├── Models/ # 数据模型
│ └── Models.swift # 数据模型定义
├── Utils/ # 工具类
│ ├── BaseTableView.swift # 基础表格视图
│ ├── BaseTableViewCell.swift # 基础表格单元格
│ ├── Extensions.swift # 扩展方法
│ ├── Helpers.swift # 辅助工具
│ ├── Managers.swift # 管理器类
│ └── ToastHUD.swift # Toast 提示
├── Resources/ # 资源文件
│ └── Assets.xcassets/ # 图片资源
│ ├── tab_home.imageset/ # 首页图标
│ ├── tab_search.imageset/ # 搜索图标
│ ├── tab_heart.imageset/ # 收藏图标
│ └── tab_user.imageset/ # 用户图标
├── Base.lproj/ # 本地化资源
│ └── LaunchScreen.storyboard # 启动屏
└── Info.plist # 应用配置
- Xcode 14.0+
- iOS 15.0+
- Swift 5.7+
- CocoaPods 1.11.0+
-
克隆项目
git clone https://github.com/lichunfei369/CoreScaffold.git cd CoreScaffold -
安装依赖
pod install
-
打开工作空间
open CoreScaffold.xcworkspace
-
运行项目
- 选择目标设备或模拟器
- 按
Cmd + R运行项目
- 使用 SnapKit 进行自动布局
- 优先使用
left、right、top、bottom,避免leading、trailing - 重绘视图时使用
remakeConstraints,避免updateConstraints - 约束命名清晰:
topConstraint、avatarWidthConstraint
- 类/结构体:大驼峰命名(
UserProfileViewController) - 变量/函数:小驼峰命名(
fetchUserInfo()) - 常量:全大写+下划线(
MAX_RETRY_COUNT) - 布尔值:添加前缀(
isLoading、hasPermission)
- 单个类不超过 300 行
- UIViewController 仅负责 UI 布局和事件转发
- 业务逻辑移至 ViewModel
- 公共逻辑封装为工具类或扩展
- 基于 Moya 的网络请求封装
- 支持多环境配置(开发/测试/生产)
- 统一的错误处理和响应拦截
- Core Data 本地数据存储
- Keychain Services 敏感数据保护
- 分离的数据模型环境
- 基础表格视图和单元格
- 自定义 TabBar 实现
- Toast 提示和 HUD 加载
- 骨架屏加载效果
- 扩展方法集合
- 管理器类封装
- 辅助工具函数
- ✅ 多语言本地化
- ✅ 深色模式适配
- ✅ 推送通知
- ✅ 图片缓存和处理
- ✅ 下拉刷新和上拉加载
- ✅ 键盘自动管理
- ✅ 网络状态监控
- ✅ 错误处理和日志
# 运行单元测试
xcodebuild test -workspace CoreScaffold.xcworkspace -scheme CoreScaffold -destination 'platform=iOS Simulator,name=iPhone 14'- 使用 XCTest 框架
- 支持自动化 UI 测试
- TestFlight Beta 版本分发
- 使用 Git Flow 分支模型
- 提交信息遵循 Conventional Commits
- 代码审查必须通过
- 遵循 Swift 官方编码规范
- 使用 SwiftLint 静态代码检查
- 定期使用 Xcode Instruments 性能分析
- 敏感数据使用 Keychain 存储
- API 密钥通过环境变量管理
- 遵循 iOS 安全最佳实践
- 开发环境:本地开发和调试
- 测试环境:功能测试和集成测试
- 生产环境:正式发布版本
- 使用
.plist文件管理环境配置 - 通过 Build Configuration 区分环境
- 资源文件统一管理在
Assets.xcassets
- 遵循 iOS Human Interface Guidelines
- 使用 Figma 进行 UI 设计
- SVG 图标资源支持
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
如有问题或建议,请通过以下方式联系:
- 创建 Issue
- 发送邮件至项目维护者
CoreScaffold - 让 iOS 开发更简单、更高效! 🚀