在自己项目中使用到或者日常接触到的的swift类库,收录最简单,易用,稳定的,方便快速,高效开发
亲测项目实用工具、助理swift开发者
[Swift 第一章节工具库篇]
时间、
音频、
摄像头、
网络请求、
图片处理、
文本、
数据解析、
UI界面布局、
加载框,弹窗、
广播通知、
数据存储、
文件操作、
其它扩展
[Swift 第二章节完整APP]
[Swift 第三章个性化组建]
嵌套滑动、
下拉刷新、
消息红点
1,SwiftyTimer
Swift里面的时间控制器,使用方便
Timer.every(0.7.seconds) {
statusItem.blink()
}
Timer.after(1.minute) {
println("Are you still here?")
}
......
项目地址:https://github.com/radex/SwiftyTimer
2.日期工具SwiftDate
创建、比较 、加减
// Attempt to parse a string using a custom format
let p_1 = "2016-01-05 23:30".date(format: .custom("yyyy-MM-dd HH:MM"))
// Attempt to parse a valid ISO8601 string
let p_2 = "2010-02-18T16.23334444".date(format: .iso8601Auto)
项目地址:https://github.com/malcommac/SwiftDate
1.SwiftySound
播放音频的工具类,简单易用,稳定
Sound.play(file: "dog.wav")
Sound.play(url: fileURL)
项目地址:https://github.com/adamcichy/SwiftySound
1.swiftScan
二维码 各种码识别,生成,界面效果
项目地址:https://github.com/MxABC/swiftScan
1.Alamofire
强大的网络请求类库,可以结合swiftJson使用,方便易用,支持各种请求方式
public enum HTTPMethod: String {
case options = "OPTIONS"
case get = "GET"
case head = "HEAD"
case post = "POST"
case put = "PUT"
case patch = "PATCH"
case delete = "DELETE"
case trace = "TRACE"
case connect = "CONNECT"
}
项目地址:https://github.com/Alamofire/Alamofire
2.ReachabilitySwift
网络状态判断
do {
reachability = try Reachability.init()
} catch {
print("Unable to create Reachability")
return
}
// 检测网络连接状态
if reachability.isReachable {
print("网络连接:可用")
} else {
print("网络连接:不可用")
}
// 检测网络类型
if reachability.isReachableViaWiFi {
print("网络类型:Wifi")
} else if reachability.isReachableViaWWAN {
print("网络类型:移动网络")
} else {
print("网络类型:无网络连接")
}
// 网络可用或切换网络类型时执行
reachability.whenReachable = { reachability in
// 判断网络状态及类型
}
// 网络不可用时执行
reachability.whenUnreachable = { reachability in
// 判断网络状态及类型
}
do {
// 开始监听
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
项目:https://github.com/ymsheng/ReachabilitySwift
1.Kingfisher 网络图片加载神器,轻量级继承,改写UIimageView,使用简单,功能强大
let url = URL(string: "url_of_your_image")
imageView.kf.setImage(with: url)
项目地址:https://github.com/onevcat/Kingfisher
2.BSImagePicker 别人写的图片选择器工具,继承方便,使用简洁,如果没有太多页面要求,可以 直接使用
let vc = BSImagePickerViewController()
bs_presentImagePickerController(vc, animated: true,
select: { (asset: PHAsset) -> Void in
// User selected an asset.
// Do something with it, start upload perhaps?
}, deselect: { (asset: PHAsset) -> Void in
// User deselected an assets.
// Do something, cancel upload?
}, cancel: { (assets: [PHAsset]) -> Void in
// User cancelled. And this where the assets currently selected.
}, finish: { (assets: [PHAsset]) -> Void in
// User finished with these assets
}, completion: nil)
项目地址:https://github.com/mikaoj/BSImagePicker
1.YYText
功能强大的 iOS 富文本编辑与显示框架。
(该项目是 YYKit 组件之一)
oc库,swift直接引用使用
项目地址:https://github.com/ibireme/YYText
1.SwiftyJSON 让json的解析变得更加简单,快捷
let json = JSON(data: dataFromNetworking)
if let userName = json[0]["user"]["name"].string {
//Now you got your value
}
项目地址:https://github.com/SwiftyJSON/SwiftyJSON
-
Ji
Ji (戟) is an XML/HTML parser for Swift
let xmlString = "<?xml version='1.0' encoding='UTF-8'?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"
let jiDoc = Ji(xmlString: xmlString)
let bodyNode = jiDoc?.rootNode?.firstChildWithName("body")
print("body: \(bodyNode?.content)") // body: Optional("Don\'t forget me this weekend!")
项目地址: https://github.com/honghaoz/Ji
3.HandyJSON
HandyJSON是一个用于Swift语言中的JSON序列化/反序列化库。使用简单、代码量少
class BasicTypes: HandyJSON {
var int: Int = 2
var doubleOptional: Double?
var stringImplicitlyUnwrapped: String!
required init() {}
}
let jsonString = "{\"doubleOptional\":1.1,\"stringImplicitlyUnwrapped\":\"hello\",\"int\":1}"
if let object = BasicTypes.deserialize(from: jsonString) {
print(object.int)
print(object.doubleOptional!)
print(object.stringImplicitlyUnwrapped)
}
项目:https://github.com/alibaba/HandyJSON
1.SnapKit 简化页面ui组件布局,适用喜欢代码写布局的开发人员,前期我也喜欢用storybroad写页面, 后来发现代码写页面来的直接,快捷。cell文件还是喜欢用xib写。强烈推荐代码布局开发人员, 减去了很多系统排版步骤
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)
}
}
}
项目地址:https://github.com/SnapKit/SnapKit
1.SVProgressHUD
数据加载框,使用很宽泛的oc类库
方便Swift开发使用请引入https://github.com/wangwu59105/swift/blob/master/SVProgressHUD.swift 这个类配套使用 项目地址:https://github.com/SVProgressHUD/SVProgressHUD
2.ASToast
Toast工具类,主要代码就一个类,对view的扩展
self.view.makeToast(message: "Single text toast",
backgroundColor: nil,
messageColor: UIColor.cyan)
项目地址:https://github.com/abdullahselek/ASToast
3.Popover
Popover工具类,主要代码就一个类,对view的扩展,画出来的。view的上下弹出图层
let startPoint = CGPoint(x: self.view.frame.width - 60, y: 55)
let aView = UIView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 180))
let popover = Popover()
popover.show(aView, point: startPoint)
项目地址:https://github.com/corin8823/Popover
1.EventBus 简单易用的通知类工具,ui 线程之间的通讯。其实个人感觉系统通知也很简洁
SwiftEventBus.onMainThread(target, name: "someEventName") { result in
// UI thread
}
// or
SwiftEventBus.onBackgroundThread(target, name:"someEventName") { result in
// API Access
}
SwiftEventBus.post("someEventName")
项目地址:https://github.com/cesarferreira/SwiftEventBus
1.Awesome Cache 轻量级本地存储,类似Android的ACache
cache.setObject("Alex", forKey: "name", expires: .Never) // same as cache["name"] = "Alex"
cache.setObject("Alex", forKey: "name", expires: .Seconds(2)) // name expires in 2 seconds
cache.setObject("Alex", forKey: "name", expires: .Date(NSDate(timeIntervalSince1970: 1428364800))) // name expires on 4th of July 2015
项目地址:http://hao.jobbole.com/awesome-cache/
1.文件操作查找Files
简化操作
//遍历
for file in try Folder(path: "MyFolder").files {
print(file.name)
}
//or
Folder.home.makeSubfolderSequence(recursive: true).forEach { folder in
print("Name : \(folder.name), parent: \(folder.parent)")
}
//操作
let folder = try Folder(path: "/users/john/folder")
let file = try folder.createFile(named: "file.json")
try file.write(string: "{\"hello\": \"world\"}")
try file.delete()
try folder.delete()
项目:https://github.com/JohnSundell/Files
1.TimedSilver 这个工具类,没有多少人用到,个人开发上传上去的,对应的开源完整的项目 TSWeChat中使用到的,对很多组件进行的扩展,很强大,个人喜欢使用tabView 和collectionView的对应扩展。如果想了解的可以参考TSWeChat
├── Foundation
│ ├── Bundle+TSExtension.swift
│ ├── Data+TSExtension.swift
│ ......
├── Struct
│ ├── Array+TSExtension.swift
│ ├── CGSize+TSExtension.swift
│ ......
├── TimedSilverHeader.h
└── UIKit
├── UIAlertController+TSExtension.swift
├── UIApplication+TSExtension.swift
├── UIButton+TSExtension.swift
......
项目地址:https://github.com/hilen/TimedSilver
2.CommonExtension.swift 自己项目中使用频率较高的扩展,系统设备的view的一些常量
extension UIView {
/// X值
var x: CGFloat {
return self.frame.origin.x
}
/// Y值
var y: CGFloat {
return self.frame.origin.y
}
/// 宽度
var width: CGFloat {
return self.frame.size.width
}
///高度
var height: CGFloat {
return self.frame.size.height
}
var size: CGSize {
return self.frame.size
}
var point: CGPoint {
return self.frame.origin
}
}
项目地址:https://github.com/wangwu59105/swift/blob/master/CommonExtension.swift
3.权限访问arek
ios的权限管理
let permission = ArekPhoto()
permission.status { (status) in
switch status {
case .authorized:
print("! ✅ !")
case .denied:
print("! ⛔️ !" )
case .notDetermined:
print("! 🤔 !" )
case .notAvailable:
print("! 🚫 !" )
}
}
项目:https://github.com/ennioma/arek
4.仿照java的集合类swift-algorithm-club
福利:
list linklist tree map set 等 感觉应该是基于java的参考编写
项目地址:https://github.com/raywenderlich/swift-algorithm-club
- 使用Swift2.0
- 编译器为Xcode7.0.1正式版,请用7.0以上的Xcode打开工程
- 直接打开xcworkspace运行工程即可
使用系统原生布局,代码编写,对初学很有帮助
项目地址:https://github.com/ZhongTaoTian/LoveFreshBeen
- 使用Swift3.0
- Xcode 8.1+正式版,iOS 8.0+ / Mac OS X 10.9+ Cocoapods 1.1.1 +
代码编写布局,可以熟悉很多第三方model的使用,SnapKit的布局,熟悉功能组件编写
项目地址:https://github.com/hilen/TSWeChat
3.AESCrypt-ObjC aes 加密解密类,是ObjC的,直接swift混合调用。
#import "AESCrypt.h"
Usage
NSString *message = @"top secret message";
NSString *password = @"p4ssw0rd";
Encrypting
NSString *encryptedData = [AESCrypt encrypt:message password:password];
Decrypting
NSString *message = [AESCrypt decrypt:encryptedData password:password];
项目地址:https://github.com/Gurpartap/AESCrypt-ObjC
1.UITableViewNest- Swift2.0
- 使用Swift2.0
- 编译器为Xcode7.0.1正式版,请用7.0以上的Xcode打开工程
- 直接打开xcworkspace运行工程即可
swift 嵌套滑动,2.0的代码,稍微改动3.0直接可以使用
项目地址:https://github.com/maguangxiao/UITableViewNest
1.MJRefresh
OC 的下拉翻页扩展库。在swift中使用,桥接文件中加入
#import "MJRefresh.h"
使用
//初始化上拉下拉
func mjRefreshUITabView(_ tabview : UITableView) {
//加载 头 尾巴
tabview.mj_header = MJRefreshNormalHeader()
tabview.mj_footer = MJRefreshAutoNormalFooter()
tabview.mj_header.setRefreshingTarget(self, refreshingAction: #selector(headerRefresh))
tabview.mj_footer.setRefreshingTarget(self, refreshingAction: #selector(footerRefresh))
}
//响应方法
@objc func headerRefresh() {
//刷新
}
@objc func footerRefresh() {
//加载
}
项目:https://github.com/CoderMJLee/MJRefresh
1.PPBadgeView
iOS Custom Badge, Support UIView, UITabBarItem, UIBarButtonItem ,Support Objective-C/Swift; iOS自定义Badge组件, 支持UIView, UITabBarItem, UIBarButtonItem, 支持Objective-C/Swift
项目地址:https://github.com/jkpang/PPBadgeView
1.SwiftTheme
更换皮肤 夜间模式 设置简单 使用方便。
可以是代码设置 、页可以是集中plist文件、也可以是zip包
view.theme_backgroundColor = ["#FFF", "#000"]
或者
view.theme_backgroundColor = "Global.backgroundColor"