感謝作者的開源Spring 其他動(dòng)畫也可以參考這個(gè)英文文檔動(dòng)畫
非常好用的一個(gè)動(dòng)畫拄养、特效的第三方庫(kù)。但是demo里沒有備注节吮,有些不清楚怎么用抽高,下面介紹下怎么在項(xiàng)目中使用它。
怎么集成到項(xiàng)目中使用
根據(jù)作者寫的README文檔透绩,支持手動(dòng)和COcoaPods集成方式翘骂。手動(dòng)集成只需把Spring文件夾拖到工程中即可壁熄。
項(xiàng)目中使用
引入頭文件import Spring (也可以不引入,直接可以用)
需要添加動(dòng)畫的控件碳竟,繼承于SpringView即可草丧。
然后添加你想要的動(dòng)畫效果
舉個(gè)栗子設(shè)置動(dòng)畫:
let ballView = SpringView()
ballView.backgroundColor = UIColor.red
ballView.frame = CGRect(x: 10, y: 50, width: 100, height: 100)
self.view.addSubview(ballView)
//設(shè)置具體動(dòng)畫形式
func setOptions() {
ballView.force = 0.7 //彈力大小
ballView.duration = 1.0 //動(dòng)畫持續(xù)時(shí)間
ballView.delay = 0.6 //動(dòng)畫延時(shí)多久執(zhí)行
ballView.damping = 0.7 //暫時(shí)不知什么用
ballView.velocity = 1.0 //暫時(shí)不知
ballView.scaleX = 0 //必須參數(shù)之一:范圍0~1
ballView.scaleY = 0 //必須參數(shù)之一:范圍0~1
ballView.x = 0 //必須參數(shù)之一:范圍任意
ballView.y = 0 //必須參數(shù)之一:范圍任意
ballView.rotate = 0 //暫時(shí)不知什么用
ballView.animation = "Shake" // 動(dòng)畫具體樣式
ballView.curve = "easeOut" // 動(dòng)畫進(jìn)入或是消失的樣式
}
```
# 這里有個(gè)地方要注意一下:
要想有動(dòng)畫效果,下面四個(gè)參數(shù)必須實(shí)現(xiàn)其中之一:(動(dòng)畫起始位置的坐標(biāo))
`scaleX, //沿著Y軸方向散開的效果莹桅, 范圍0~1
scaleY, //沿著Y軸方向散開的效果昌执, 范圍0~1
x, //偏移起始位置X軸方向上的位移,動(dòng)畫結(jié)束會(huì)沿著X軸返回到起始位置诈泼,大小隨便設(shè)置懂拾,可正可負(fù)
y //偏移起始位置Y軸方向上的位移,動(dòng)畫結(jié)束會(huì)沿著Y軸返回到起始位置铐达, 大小隨便設(shè)置岖赋,可正可負(fù)`
其他的參數(shù)都有默認(rèn)值可以不實(shí)現(xiàn),包括`animation動(dòng)畫效果`和`curve進(jìn)入方式`都可以不實(shí)現(xiàn)娶桦。
#### 以上這樣一個(gè)動(dòng)畫就集成完了
###怎么開始動(dòng)畫
一句代碼即可:`ballView.animate()`動(dòng)畫就會(huì)動(dòng)起來了贾节。。
還有這個(gè),動(dòng)畫執(zhí)行完成后衷畦,可以進(jìn)行你想要的動(dòng)作栗涂。
``` ballView.animateNext {
print("動(dòng)畫完成進(jìn)行的動(dòng)作")
}```
至于這個(gè)方法 ` ballView.animateTo()`和``` ballView.animateToNext {
print("Do somethings")
}```
的使用,參照代碼:
modalView.animation = "slideRight"
modalView.animateFrom = false
modalView.animateToNext(completion: {
self.dismiss(animated: false, completion: nil)
})```
什么意思呢祈争? 就是先執(zhí)行上面設(shè)置動(dòng)畫的動(dòng)作斤程,動(dòng)作結(jié)束了,在進(jìn)行下一個(gè)動(dòng)作(動(dòng)畫會(huì)移除掉菩混?忿墅?懵逼了 具體怎么樣看demo源碼的效果去吧。沮峡。)
界面之間的跳轉(zhuǎn)交互
和原來的交互一樣方法的一樣疚脐,present 、dismiss邢疙、push棍弄、 pop等,你也可以設(shè)置transform樣式疟游,都不影響呼畸。你想要有SpringView動(dòng)畫效果怎么辦呢?
就是將你想要添加的動(dòng)畫繼承SpringView颁虐,然后添加動(dòng)畫就好了蛮原。
你可以給某一個(gè)View添加動(dòng)畫,也可以給某幾個(gè)View添加動(dòng)畫另绩。
*整個(gè)界面有動(dòng)畫效果怎么辦呢儒陨? *
我的處理方法是:在self.view
上面add一個(gè)一樣的大的View花嘶,所有的控件都add到這個(gè)上面,然后讓這個(gè)View繼承于SpringView的框全,在添加動(dòng)畫即可察绷。
不知道大家是怎么實(shí)現(xiàn)的,還望賜教告訴一下津辩。O(∩_∩)O謝謝
添加一點(diǎn)動(dòng)畫坐標(biāo)及樣式
"ease": ".25,.1,.25,1",
"linear": "0,0,1,1",
"ease-in": ".42,0,1,1",
"ease-out": "0,0,.58,1",
"ease-in-out": ".42,0,.58,1",
"EaseInSine": "0.47, 0, 0.745, 0.715",
"EaseOutSine": "0.39, 0.575, 0.565, 1",
"EaseInOutSine": "0.445, 0.05, 0.55, 0.95",
"EaseInQuad": "0.55, 0.085, 0.68, 0.53",
"EaseOutQuad": "0.25, 0.46, 0.45, 0.94",
"EaseInOutQuad": "0.455, 0.03, 0.515, 0.955",
"EaseInCubic": "0.55, 0.055, 0.675, 0.19",
"EaseOutCubic": "0.215, 0.61, 0.355, 1",
"EaseInOutCubic": "0.645, 0.045, 0.355, 1",
"EaseInQuart": "0.895, 0.03, 0.685, 0.22",
"EaseOutQuart": "0.165, 0.84, 0.44, 1",
"EaseInOutQuart": "0.77, 0, 0.175, 1",
"EaseInQuint": "0.755, 0.05, 0.855, 0.06",
"EaseOutQuint": "0.23, 1, 0.32, 1",
"EaseInOutQuint": "0.86, 0, 0.07, 1",
"EaseInExpo": "0.95, 0.05, 0.795, 0.035",
"EaseOutExpo": "0.19, 1, 0.22, 1",
"EaseInOutExpo": "1, 0, 0, 1",
"EaseInCirc": "0.6, 0.04, 0.98, 0.335",
"EaseOutCirc": "0.075, 0.82, 0.165, 1",
"EaseInOutCirc": "0.785, 0.135, 0.15, 0.86",
"EaseInBack": "0.6, -0.28, 0.735, 0.045",
"EaseOutBack": "0.175, 0.885, 0.32, 1.275",
"EaseInOutBack": "0.68, -0.55, 0.265, 1.55"
}```
具體動(dòng)畫路徑
![軌跡圖片.png](http://upload-images.jianshu.io/upload_images/2286585-1631a2520554431b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
##備注
> demo里面有很多細(xì)節(jié)拆撼,比如modal頁面中presention和presenting的交互,通過UIApplication.sharedApplication().sendAction("minimizeView:", to: nil, from: self, forEvent: nil)和委托實(shí)現(xiàn)
這個(gè)很值得我們學(xué)習(xí)喘沿。 也可以用這個(gè)方法獲取第一響應(yīng)者闸度。