App(Swift)开发常用的三方库

Alamofire

App(Swift)开发常用的三方库_第1张图片
Alamofire: Elegant Networking in Swift
  • 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

  • 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

App(Swift)开发常用的三方库_第2张图片
Kingfisher
  • Kingfisher 是一款轻量、纯Swift开发的图片加载库,现在是4.0版本,API方面相比之前有了挺大的改变,使用后感觉更为灵活了,对于学习Swift的思想有不错的学习价值。

    let url = URL(string: "url_of_your_image")
    imageView.kf.setImage(with: url)
    

SnapKit

App(Swift)开发常用的三方库_第3张图片
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


App(Swift)开发常用的三方库_第4张图片
SwiftDate

  • 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 or hour, minutes!
  • 其他一些简单的工具 (isYesterday,isTomorrow,isBefore()...)

IGListKit

Instagram


App(Swift)开发常用的三方库_第5张图片
IGListKit
  • IGListKit 该库是Instagram的公司用于开发Instagram App使用的UI框架 是基于UICollectionView的一款数据驱动的UI编写框架,数据驱动也就是当我们写好UI代码后剩下的只需要关系数据的变化即可实现复杂的试图逻辑。

Texture

App(Swift)开发常用的三方库_第6张图片
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()
    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
  • Hero
  • Hero
  • Hero 是一款实现转场动画的库

  • 一个例子

    Hero
    redView.heroID = "ironMan"
    blackView.heroID = "batMan"
    
    isHeroEnabled = true
    redView.heroID = "ironMan"
    blackView.heroID = "batMan"
    whiteView.heroModifiers = [.translate(y:100)]
    

你可能感兴趣的:(App(Swift)开发常用的三方库)