Alamofire
Alamofire 是一款用Swift编写的HTTP 网络库,类似于OC里的AFNetWorking
-
使用举例
Alamofire.request("https://httpbin.org/get").responseJSON { response in print("Request: \(String(describing: response.request))") // original url request print("Response: \(String(describing: response.response))") // http url response print("Result: \(response.result)") // response serialization result if let json = response.result.value { print("JSON: \(json)") // serialized json response } if let data = response.data, let utf8Text = String(data: data, encoding: .utf8) { print("Data: \(utf8Text)") // original server data as UTF8 string } }
CryptoSwift
- CryptoSwift 是使用Swift编写的一款用于加密的库,支持MD5 SHA1 SHA224 SHA256 SHA384 SHA512 SHA3 AES 等等,只用非常简单,支持iOS, macOS, AppleTV, watchOS, Linux 等平台
SwiftyJSON
SwiftyJSON 让在Swift里使用JSON数据变得非常容易
-
使用SwiftyJSON前后对比
if let statusesArray = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [[String: Any]], let user = statusesArray[0]["user"] as? [String: Any], let username = user["name"] as? String { // Finally we got the username }
let json = JSON(data: dataFromNetworking) if let userName = json[0]["user"]["name"].string { //Now you got your value }
一切都变得异常美好
Kingfisher
-
Kingfisher 是一款轻量、纯Swift开发的图片加载库,现在是4.0版本,API方面相比之前有了挺大的改变,使用后感觉更为灵活了,对于学习Swift的思想有不错的学习价值。
let url = URL(string: "url_of_your_image") imageView.kf.setImage(with: url)
SnapKit
-
SnapKit SnapKit是Masonry团队开发的Swift版本,对于习惯了使用Masonry开发的开发者来说SnapKit非常容易上手。
import SnapKit class MyViewController: UIViewController { lazy var box = UIView() override func viewDidLoad() { super.viewDidLoad() self.view.addSubview(box) box.snp.makeConstraints { (make) -> Void in make.width.height.equalTo(50) make.center.equalTo(self.view) } } }
Spring
-
Spring 是一款简化iOS UIView动画的第三方库,即使苹果在动画方面已经支持的非常好,但是在一些连贯的动画实现方面还有不少的不方便的地方,Spring极大的方便了实现一些复杂的组合动画。看个简单的例子
layer.y = -50 animateToNext { layer.animation = "fall" layer.animateTo() }
SwiftDate
<p align="center" >
</p>
- SwiftDate 项目开发里总避免不了日期的格式化、计算、转换、时间段等等,SwiftDate就是为了解决这些问题的
-
可以简单的进行日期操作! 例如:
aDate + 2.weeks + 1.hour or (1.year - 2.hours + 16.minutes).fromNow()
-
非常方便的从 timezone, locale and calendar 进行转换. 使用这个工具类
DateInRegion
可以进行日期的转换! -
非常方便的进行日期比较
<,>,==,<=,>=
. 例如, 你可以这么做aDate1 >= aDate2 or aDate1.isIn(anotherDate,.day)
-
非常简单的和日期组件. E.g.
aDateInRegion.day
orhour
,minutes
! -
其他一些简单的工具 (
isYesterday,isTomorrow,isBefore()
...)
IGListKit
- IGListKit 该库是Instagram的公司用于开发Instagram App使用的UI框架 是基于UICollectionView的一款数据驱动的UI编写框架,数据驱动也就是当我们写好UI代码后剩下的只需要关系数据的变化即可实现复杂的试图逻辑。
Texture
Texture 其实就是 AsyncDisplayKit Texture的基本单元是node,ASDisplayNode是UIView之上的抽象层,同时也是CALayer的抽象层。和只能被用在主线程的视图不同,nodes是线程安全的:你能并行的实例化并设置整个node层级,并且在后台线程里运行。
-
用法和使用UIKit的组件用法差不多
_imageView = [[UIImageView alloc] init]; _imageView.image = [UIImage imageNamed:@"hello"]; _imageView.frame = CGRectMake(10.0f, 10.0f, 40.0f, 40.0f); [self.view addSubview:_imageView];
_imageNode = [[ASImageNode alloc] init]; _imageNode.backgroundColor = [UIColor lightGrayColor]; _imageNode.image = [UIImage imageNamed:@"hello"]; _imageNode.frame = CGRectMake(10.0f, 10.0f, 40.0f, 40.0f); [self.view addSubview:_imageNode.view];
Moya
Moya 是一个高度抽象的网络库,他的理念是让你不用关心网络请求的底层的实现细节,只用定义你关心的业务。且Moya采用桥接和组合来进行封装(默认桥接了Alamofire),使得Moya非常好扩展,让你不用修改Moya源码就可以轻易定制。官方给出几个Moya主要优点:
编译时检查API endpoint权限
让你使用枚举定义各种不同Target, endpoints
-
把stubs当做一等公民对待,因此测试超级简单。
provider = MoyaProvider<GitHub>() provider.request(.zen) { result in switch result { case let .success(moyaResponse): let data = moyaResponse.data let statusCode = moyaResponse.statusCode // do something with the response data or statusCode case let .failure(error): // this means there was a network failure - either the request // wasn't sent (connectivity), or no response was received (server // timed out). If the server responds with a 4xx or 5xx error, that // will be sent as a ".success"-ful response. } }
R.swift
-
R.swift 可以让你在开发种像安卓开发那样使用资源文件
R.image.settingsIcon()
,是不是比用Swift的方式要赏心悦目的很多,这样做有很多好处,首先是避免了字符串拼写错误导致的问题太难被发现的问题,还有R.Swift可以在编译时检查那些文件是没有被用到的let icon = UIImage(named: "settings-icon") let font = UIFont(name: "San Francisco", size: 42) let viewController = CustomViewController(nibName: "CustomView", bundle: nil) let string = String(format: NSLocalizedString("welcome.withName", comment: ""), locale: NSLocale.current, "Arthur Dent")
let icon = R.image.settingsIcon() let font = R.font.sanFrancisco(size: 42) let viewController = CustomViewController(nib: R.nib.customView) let string = R.string.localizable.welcomeWithName("Arthur Dent")
Hero
Hero 是一款实现转场动画的库
-
一个例子
redView.heroID = "ironMan" blackView.heroID = "batMan" isHeroEnabled = true redView.heroID = "ironMan" blackView.heroID = "batMan" whiteView.heroModifiers = [.translate(y:100)]