Skip to content
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

4.2

  • MBENVFlag 类型进行了调整,便于 Swift 中使用,现在是 OptionSet,可直接进行扩展,旧的地方全部需要调整;
  • ZY 前缀的组件全部改为 MB;

4.1

  • 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 管理,旧的颜色分类被移除。

4.0

  • API 请求组件底层大升级,API 类提供了兼容接口,除了完成回调增加一个完成参数外基本无需修改,但建议尽快升级到新版接口;
  • 导航样式默认无阴影,隐藏返回按钮标题。

Clone this wiki locally