forked from Chinamobo/iOS-Project-Template
-
Notifications
You must be signed in to change notification settings - Fork 13
Home
BB9z edited this page Jul 25, 2020
·
30 revisions
这套模版经过多年的积累,包含的内容非常之多,有方方面面成体系的解决方案,大量可以拆成一个个三方库的组件,数量在一百左右。
我有信心说,对大部分开发者来说,这里是个宝藏。但目前项目理解起来可能会有点难,随组件的文档不一定够,整个体系背后潜在的运行机制,具体使用不够直观。针对这个问题,现已随模版带了一套 demo,后续会再开一个项目增加各种 demo。
-
如果你想用纯 Swift
暂时能直接拿去用的东西不是很多,剩下的只能借鉴了。目前的基本原则是:具体项目的东西用 Swift 写,跨项目通用的、不变的用 Objective-C 写,追求一次写好,多年不用更。
越往后用 Swift 的肯定越多,等 iOS 15 出来,迁移到 Swift UI 是必然。
-
如果你用代码写界面,而不是用 Interface Builder
那么 UI 相关的组件使用起来有可能会有问题。我从 iOS 5 以来一直用 Storyboard,大量的组件从没有通过代码创建过,因为生命周期的差异,可能会有 bug。
-
如果你已经有了一些成体系的解决方案
把不同的方案混起来可能比较困难,仔细去对比,放弃自己的方案成本也比较高。
下载好后使用 bootstrap 脚本初始化,详见使用指南。
这里只列举更新会影响使用,涉及兼容性的变更,并提供升级建议。 更新的细节见 Releases。
- MBENVFlag 类型进行了调整,便于 Swift 中使用,现在是 OptionSet,可直接进行扩展,旧的地方全部需要调整;
- ZY 前缀的组件全部改为 MB;
- API 用 Swift 重写了,
APIURLAssetsBase常量去掉了,有需要重新定义即可,APIErrorDomain更名为API.errorDomain,图片加载的扩展去掉了,可直接用 SDWebImage 或 ZYImageView; - MBCollectionView 得到了完善,更接近 MBTableView。底部刷新采用安全的实现,不自动加载,需要在 IB 中自定义 section footer;
- MBControlGroup 及其子类的选中通知现在默认只在用户触发时调用(通过调整
selectionNoticeOnlySendWhenButtonTapped的默认值); - MBFormSelectButton 支持 generics,在 Swift 中使用需修改声明;
- MBSearchTextField,doSearch 回调增加了用于区分是否自动搜索的参数;
- MBSearchViewController 不再设置默认的导航和状态栏样式;
- MBShareManager,现支持 WeChat SDK 1.8.6+;
- MBTableView
fetchItems(withPageFlag:)重命名为fetchItems(nextPage:); - NSMilliDate 被移除,在整个应用中,如果日期格式一致,统一修改 JSONValueTransformer 实现即可;如果有多种日期格式,建议在模型上解析少见的格式;
- 代码组件、UI 素材的组织有调整;
- 颜色管理全面转用 asset catalog 管理,旧的颜色分类被移除。
- API 请求组件底层大升级,API 类提供了兼容接口,除了完成回调增加一个完成参数外基本无需修改,但建议尽快升级到新版接口;
- 导航样式默认无阴影,隐藏返回按钮标题。