Swift-UIView動畫
UIView動畫可以設(shè)置的動畫屬性有:
1、大小變化(frame)
2、拉伸變化(bounds)
3、中心位置(center)
4、旋轉(zhuǎn)(transform)
5、透明度(alpha)
6、背景顏色(backgroundColor)
7、拉伸內(nèi)容(contentStretch)
其中通過transform也可以實(shí)現(xiàn)不同的動畫效果,例如:平移、縮放、旋轉(zhuǎn)、翻轉(zhuǎn)
簡單動畫
//最簡單的動畫UIView.animate(withDuration:2){self.view.backgroundColor=UIColor.yellowself.textView.alpha=0self.textView.center.y+=200}
transform
與transform結(jié)合使用,實(shí)現(xiàn)不同的效果
UIView.animate(withDuration:2){self.textView.backgroundColor=UIColor.yellowself.textView.transform=CGAffineTransform.identity.translatedBy(x:-100,y:0)//平移.rotated(by:CGFloat(Double.pi/4))//旋轉(zhuǎn).scaledBy(x:0.5,y:0.5)//縮放}
options
UIView 動畫比較完整的版本并不是上面那么簡短,還有很多其他的參數(shù)可以配置。
UIView.animate(withDuration:,delay:<#T##TimeInterval#>,options:<#T##UIView.AnimationOptions#>,animations:<#T##()-> Void#>,completion:<#T##((Bool)-> Void)?##((Bool)-> Void)?##(Bool)-> Void#>)
參數(shù):
withDuration:動畫的持續(xù)時間
delay:動畫開始之前的延時,默認(rèn)是無延時。
options:一個附加選項(xiàng),UIViewAnimationOptions 可以指定多個
animations:執(zhí)行動畫的閉包
completion:動畫完成后執(zhí)行的閉包,可以為nil,可以在這里鏈接下一個動畫。
主要的options (UIViewAnimationOptions) :
動畫執(zhí)行對應(yīng)的曲線(緩沖)
.curveEaseIn : 在動畫開始時加速
.curveEaseOut : 在動畫結(jié)束時減速
.curveEaseInOut : 相當(dāng)于[.curveEaseIn, .curveEaseOut]的組合,在開始加速和在結(jié)束動畫時減速
.curveLinear :讓動畫保持勻速
動畫重復(fù)(Repeating)
.autoreverse:往返動畫,從開始執(zhí)行到結(jié)束后,又從結(jié)束返回開始
.repeat: 讓動畫一直重復(fù)執(zhí)行
彈性動畫(Spring animations)
UIView.animate(withDuration:<#T##TimeInterval#>,delay:<#T##TimeInterval#>,usingSpringWithDamping:<#T##CGFloat#>,initialSpringVelocity:<#T##CGFloat#>,options:<#T##UIView.AnimationOptions#>,animations:<#T##()-> Void#>,completion:<#T##((Bool)-> Void)?##((Bool)-> Void)?##(Bool)-> Void#>)
usingSpringWithDamping: 設(shè)置彈性動畫的阻尼(范圍:0.0~1.0),越接近0.0彈性越大,反之則越小。
initialSpringVelocity: 表示一個初始速度,動畫執(zhí)行快慢由他和duration共同決定。這個需要根據(jù)實(shí)際情況多調(diào)試。
Transitions 過渡動畫
過度動畫強(qiáng)調(diào)的是view改變內(nèi)容。一般有兩個方法:
UIView.transition(from:<#T##UIView#>,to:<#T##UIView#>,duration:<#T##TimeInterval#>,options:<#T##UIView.AnimationOptions#>,completion:<#T##((Bool)-> Void)?##((Bool)-> Void)?##(Bool)-> Void#>)UIView.transition(with:<#T##UIView#>,duration:<#T##TimeInterval#>,options:<#T##UIView.AnimationOptions#>,animations:<#T##(()-> Void)?##(()-> Void)?##()-> Void#>,completion:<#T##((Bool)-> Void)?##((Bool)-> Void)?##(Bool)-> Void#>)
options類型:
.transitionFlipFromLeft: // 從左邊翻轉(zhuǎn)
.transitionFlipFromRight: // 從右邊翻轉(zhuǎn)
.transitionFlipFromTop: // 從底部翻轉(zhuǎn)
.transitionFlipFromBottom: // 從底部翻轉(zhuǎn)
.transitionCurlUp: // 卷上去
.transitionCurlDown: // 卷下來
.transitionCrossDissolve: // 交叉溶解