Swift 版的 iOS_Bootstrap
概述
网络,tableview,用户默认设置,数据解析,等等……,这些都是在几乎所有项目中普遍使用的最常见功能,那么如果我们有一个能像老板一样为我们完成这些工作的东西,我们为什么还要一次又一次地重复相同的工作呢 !!
索引
特性
- 仅导入 bootstrap。
- 抽象网络层(统一错误+统一结果闭包)。
- 通用错误管理器。
- 统一解析器。
- 带有空数据集处理器的 tableview 适配器。
- 可重用 tableview 适配器。
- 吐司消息组件(类似于 Android 中的那个)
😉 ). - 简化语法(队列单元格,程序性地跳转到 Viewcontroller)。
- 自定义选择器(列表,日期,时间,日期和时间,多列列表)。
- 可自定义的进度对话框。
- 对象解析(序列化和反序列化)的统一基础模型。
- 统一基础推通知模型,用于解解析推送通知负载。
- 用户默认设置管理器。
- 基础集合和表格视图单元格。
- 集合视图和表格视图(包括空数据集)仅有一个委托。
- 单体日志类(类似Android中的一个)。
😉 ). - 有用的扩展(字符串到字典,从数组中删除重复项,十六进制到UI颜色,UIlabel部分文本格式化,UIimage + GIF)。
- 可定制的UIview。
- 可定制的Cardview。
- 可定制的UIbutton。
- 可定制的切换按钮(复选框+单选按钮)。
- 键盘处理。
- 集合视图适配器。
- 可重用集合视图适配器。
- 表格和集合视图分页处理。
- 自动从网络中加载图片和缓存。
- 协调器设计模式+视图控制器导航器基类+示例。
- 简单的依赖注入实现。
- 刷新令牌RX Swift插件。
- 实时监听令牌更新/过期事件(与第29或第30点一起使用,但不能单独使用)。
- 开箱即用的应用程序构建变体/方案(调试 - 预发布 - 发布)处理程序。
- 读写文件/文件夹管理器。
- 应用程序内的本地化管理器(无需重启您的应用程序)。
😉 ). - 更简洁的本地化语法。
- UI按钮显示/隐藏加载扩展。
- 在任何视图控制器中显示/隐藏加载。
- BaseTableAdapterController,BaseTableAdapterPresenter,BaseCollectionAdapterController,BaseCollectionAdapterPresenter,以节省您在实现表格或集合视图时的时间和代码。
- 默认情况下,您可以通过BaseController和BasePresenter调用getUserDefaults。
- 电话号码验证字符串扩展。
- ViewPager(又称:分段控制器)类似于Android中的ViewPager。
😁 . - 自动上下文注入。
- 添加了UITabBar控制器MVP基类。
- 使用友好的构建器模式方法-default app delegate配置。
- 轻松取消任何新的网络请求。
- 带有MVP的Base side menu controller,Base tabbar controller,Base table and collection view controller,全部开箱即用。
- 您可以为iPhone X系列隐藏刘海。
😁 . - 开箱即用的侧边菜单。
- 事件总线辅助类。
- 添加了添加到UIView、表格和集合视图的抖动效果的帮助类。
- 添加了下拉横幅组件。
- 包含RXvalidation。
- 开箱即用的表格和集合视图实时数据。
- 如何使用+示例+文档+参考。
即将推出的功能
- 更多扩展!如果您经常使用某个扩展,请立即发送PR。
要求
- iOS 9.1+
- Xcode 9.2+
- Swift 4.1+
安装
您可以使用 CocoaPods 将 iOS_Bootstrap 集成到您的项目中。
CocoaPods 是 iOS Cocoa 项目的依赖管理器,您可以使用以下命令安装它:
$ gem install cocoapods
要构建 iOS_Bootstrap,需要 CocoaPods 1.1+。
要使用 CocoaPods 将 iOS_Bootstrap 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它。
pod 'iOS_Bootstrap'
然后运行以下命令:
$ pod install
一旦您的项目集成 iOS_Bootstrap,您可以使用以下命令拉取更新。
$ pod update
注意事项
在 thils 项目中有一个项目生成器,可以帮助您更快地构建东西,请访问 链接,祝您愉快。
快速入门
只需要导入 iOS_Bootstrap
,然后就可以开始使用了。
- 对于此 Pod 中几乎所有可用的功能,都有一个示例文件、使用示例或链接到示例或解释。
- 对于任何不清楚的地方或需要帮助,请联系我或打开一个错误报告,我将尽快协助您。
使用方法(高亮)
dequeuing cell 简化语法
使用此语法:
let cell : TableViewCell = tableview.dequeueReusableCell(forIndexPath: indexPath)
而不是使用此语法:
将cell标签设置为其对应的TableVIewCell类型。
处理表格视图空或为nil的数据源的情况。
使用此项
let storyboard = UIStoryboard.getStoryboardWithName(Storyboard.home.rawValue)
let homeVC : HomeVC = storyboard.instantiateInitialViewController()
present(homeVC, animated: true, completion: nil)
而不是使用此语法:
let storyboard : UIStoryboard = UIStoryboard(name: "Home", bundle:nil)
let homeVC = storyboard.instantiateViewControllerWithIdentifier("nextView") as! HomeVC
self.presentViewController(homeVC, animated:true, completion:nil)
当使用Alamofire时,你得到成功和失败的结果,只有当网络出现错误时失败闭包才会被调用,但如果服务器失败,例如404、500等,所有的错误都会进入成功闭包,你必须自己处理,我发现这很奇怪,所以如果你使用了GenericErrorHandler
和网络的抽象层一起,你可以使用以下操作符.filterSuccessfulStatusCodes()
& processErrors()
来筛选结果闭包的结果,同时你甚至可以将服务器消息本地化,以防你的应用程序在不同的语言中。
#### Unified result closure :
A close that returns a result of any type and an error string.
#### Loggers :
Instead of filling your code with statemetns which is not good plus it will affetct your code when your release it to production, you can use `Log` class which is pretty readable in the console plus it works only in the debug mode and you can debug with error, info., warning, server and more.
`Log.error("There is an error ")`
>Many many more ( About 56 features ), you can find more details in the examples associated with the pod and if anything is not clear just contact me.
### Note :
>Due to a bug in Cocoapods, so the Storyboard sometimes many fail to render if you added a custom `@IBDesignable` view to a component in storyboard and this custom `@IBDesignable` view was in the pod files path (Any pod not just my pod) and not your project files path, so to solve this problem please add the following code to the end of your pod file.
>
```ruby
# Workaround for Cocoapods issue #7606
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings.delete('CODE_SIGNING_ALLOWED')
config.build_settings.delete('CODE_SIGNING_REQUIRED')
end
end
更多信息,请参阅此链接链接
-
我需要将Alamofire库添加到我的项目中吗?
不需要,因为一旦将iOS_Bootstrap
添加到你的项目中,Alamofire就会安装。 -
如果我从iOS_Bootstrap中需要使用Alamofire或其他依赖项,我该怎么做?
你所需要做的就是导入库,而不是导入iOS_Bootstrap
。
致谢
以下是一些出色的库,被用作我的pods的依赖项:
此外,以下Repos对我的帮助很大,要么直接将它们的代码集成到我的pods中,要么使用它们代码的一部分来改进我的库或学习新东西,所以非常感谢你们免费将这些优秀的代码共享给社区。
- EZLoadingActivity.
- Lucid.
- ActionSheetPicker-3.0.
- ADTPagerController.
- Bartinter.
- SlideMenuControllerSwift.
- HairPowder.
- SwiftEventBus.
- BRYXBanner
- RxValidator
帮助我改进文档
作为一名第一次尝试这个pods的开发者,你通过改进文档可以做出有价值的贡献。
- 发送关于你认为混淆或遗漏内容的反馈。
- 建议更好的措辞或解释某些主题的方法。
- 通过GitHub的pull request。
- 欢迎提交错误报告、功能请求、补丁、良好祝愿和说唱演示磁带。
作者
Ahmad Mahmoud Saleh
贡献者
联系我们
许可证
iOS_Bootstrap 采用 MIT 许可证发布。查看许可证 以获取详细信息。