我將整個(gè)項(xiàng)目的復(fù)習(xí)拆分成了幾個(gè)部分, 每完成一部分我都會(huì)提交一次代碼, 大家根據(jù)所復(fù)習(xí)到的部分, 檢出對(duì)應(yīng)的分支來(lái)看代碼就可以了, 代碼中的注釋已經(jīng)十分詳盡了, 有問(wèn)題或者疑惑大家可以隨時(shí)留言溝通.
項(xiàng)目地址
知識(shí)點(diǎn)匯總
- 繼承UIControl 實(shí)現(xiàn)自定義下拉刷新控件的封裝
- Swift-Cell行高自適應(yīng)之SnapKit
- Swift-枚舉名、枚舉值的相互轉(zhuǎn)化
- Swift-通過(guò)字符串轉(zhuǎn)class創(chuàng)建控制器
- 調(diào)度組的使用
- didSet方法中oldValue的簡(jiǎn)單使用
- 含有相同規(guī)律的字符串截取問(wèn)題
- 截屏操作
- 系統(tǒng)的高斯模糊
- 系統(tǒng)絕對(duì)時(shí)間
- pop的介紹
通過(guò)pop實(shí)現(xiàn)的composeView
5. 調(diào)度組
// 創(chuàng)建調(diào)度組: 等待所有任務(wù)都結(jié)束了, 會(huì)得到通知
let group = DispatchGroup()
for dict in array) {
// 進(jìn)入調(diào)度組
group.enter()
// 進(jìn)行的操作
do something... complete{
// 離開(kāi)調(diào)度組
group.leave()
}
}
// 調(diào)度組接受所有任務(wù)完成的消息
group.notify(queue: DispatchQueue.main) {
do something...
}
6. didSet方法中oldValue的簡(jiǎn)單使用
didSet方法中oldValue 就是該屬性上一次的值.
7. 含有相同規(guī)律的字符串截取問(wèn)題
8. 截屏操作
private func screenShot() -> UIImage? {
// 1. 拿到主window
let window = UIApplication.shared.windows.first!
// 2. 開(kāi)啟圖像上下文
UIGraphicsBeginImageContext(window.frame.size)
// 3. 把window上的內(nèi)容渲染到上下文中
// iOS7.0 之后提出的, afterScreenUpdates表示是否在屏幕更新后渲染
window.drawHierarchy(in: window.frame, afterScreenUpdates: false)
// 4. 從上下文中獲取到image
let image = UIGraphicsGetImageFromCurrentImageContext()
// 5. 關(guān)閉上下文
return image
}
9. 系統(tǒng)的高斯模糊
// 原生高斯模糊 - light是個(gè)枚舉
let blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffect.Style.light))
blur.frame = 設(shè)置區(qū)域
要模糊的對(duì)象.addSubview(blur)
10. 系統(tǒng)絕對(duì)時(shí)間
12. 通過(guò)pop實(shí)現(xiàn)的composeView(詳見(jiàn)HComposeView.swift
)
// 實(shí)例化阻尼動(dòng)畫對(duì)象 -> 變化中心點(diǎn)坐標(biāo)
let anSpring = POPSpringAnimation(propertyNamed: kPOPViewCenter)!
// 設(shè)置終點(diǎn)位置
anSpring.toValue = CGPoint(x: button.center.x, y: button.center.y - H)
// 開(kāi)始時(shí)間 CACurrentMediaTime() 系統(tǒng)絕對(duì)時(shí)間
anSpring.beginTime = CACurrentMediaTime() + Double(i)*0.025
//[0-20] 彈力 越大則震動(dòng)幅度越大
anSpring.springBounciness = 4
//[0-20] 速度 越大則動(dòng)畫結(jié)束越快
anSpring.springSpeed = 12
// 給button按鈕添加動(dòng)畫
button.pop_add(anSpring, forKey: nil)
.End