UIView動(dòng)畫(huà)簡(jiǎn)介#
UIView動(dòng)畫(huà)實(shí)質(zhì)上是對(duì)Core Animation的封裝,提供簡(jiǎn)潔的動(dòng)畫(huà)接口。
UIView動(dòng)畫(huà)可以設(shè)置的動(dòng)畫(huà)屬性有:
1、大小變化(frame)
2、拉伸變化(bounds)
3、中心位置(center)
4、旋轉(zhuǎn)(transform)
5、透明度(alpha)
6、背景顏色(backgroundColor)
7、拉伸內(nèi)容(contentStretch)
UIView 動(dòng)畫(huà)的6個(gè)API#
1、簡(jiǎn)潔的Block動(dòng)畫(huà):包含時(shí)間和動(dòng)畫(huà)
[UIView animateWithDuration:(NSTimeInterval) //動(dòng)畫(huà)持續(xù)時(shí)間
animations:^{
//執(zhí)行的動(dòng)畫(huà)
}];
2、帶有動(dòng)畫(huà)完成回調(diào)的Block動(dòng)畫(huà)
[UIView animateWithDuration:(NSTimeInterval) //動(dòng)畫(huà)持續(xù)時(shí)間
animations:^{
//執(zhí)行的動(dòng)畫(huà)
} completion:^(BOOL finished) {
//動(dòng)畫(huà)執(zhí)行完畢后的操作
}];
3、可設(shè)置延遲時(shí)間和過(guò)渡效果的Block動(dòng)畫(huà)
[UIView animateWithDuration:(NSTimeInterval) //動(dòng)畫(huà)持續(xù)時(shí)間
delay:(NSTimeInterval) //動(dòng)畫(huà)延遲執(zhí)行的時(shí)間
options:(UIViewAnimationOptions) //動(dòng)畫(huà)的過(guò)渡效果
animations:^{
//執(zhí)行的動(dòng)畫(huà)
} completion:^(BOOL finished) {
//動(dòng)畫(huà)執(zhí)行完畢后的操作
}];
---------------------------------
UIViewAnimationOptions的枚舉值如下,可組合使用:
UIViewAnimationOptionLayoutSubviews //進(jìn)行動(dòng)畫(huà)時(shí)布局子控件
UIViewAnimationOptionAllowUserInteraction //進(jìn)行動(dòng)畫(huà)時(shí)允許用戶交互
UIViewAnimationOptionBeginFromCurrentState //從當(dāng)前狀態(tài)開(kāi)始動(dòng)畫(huà)
UIViewAnimationOptionRepeat //無(wú)限重復(fù)執(zhí)行動(dòng)畫(huà)
UIViewAnimationOptionAutoreverse //執(zhí)行動(dòng)畫(huà)回路
UIViewAnimationOptionOverrideInheritedDuration //忽略嵌套動(dòng)畫(huà)的執(zhí)行時(shí)間設(shè)置
UIViewAnimationOptionOverrideInheritedCurve //忽略嵌套動(dòng)畫(huà)的曲線設(shè)置
UIViewAnimationOptionAllowAnimatedContent //轉(zhuǎn)場(chǎng):進(jìn)行動(dòng)畫(huà)時(shí)重繪視圖
UIViewAnimationOptionShowHideTransitionViews //轉(zhuǎn)場(chǎng):移除(添加和移除圖層的)動(dòng)畫(huà)效果
UIViewAnimationOptionOverrideInheritedOptions //不繼承父動(dòng)畫(huà)設(shè)置
UIViewAnimationOptionCurveEaseInOut //時(shí)間曲線,慢進(jìn)慢出(默認(rèn)值)
UIViewAnimationOptionCurveEaseIn //時(shí)間曲線,慢進(jìn)
UIViewAnimationOptionCurveEaseOut //時(shí)間曲線,慢出
UIViewAnimationOptionCurveLinear //時(shí)間曲線,勻速
UIViewAnimationOptionTransitionNone //轉(zhuǎn)場(chǎng),不使用動(dòng)畫(huà)
UIViewAnimationOptionTransitionFlipFromLeft //轉(zhuǎn)場(chǎng),從左向右旋轉(zhuǎn)翻頁(yè)
UIViewAnimationOptionTransitionFlipFromRight //轉(zhuǎn)場(chǎng),從右向左旋轉(zhuǎn)翻頁(yè)
UIViewAnimationOptionTransitionCurlUp //轉(zhuǎn)場(chǎng),下往上卷曲翻頁(yè)
UIViewAnimationOptionTransitionCurlDown //轉(zhuǎn)場(chǎng),從上往下卷曲翻頁(yè)
UIViewAnimationOptionTransitionCrossDissolve //轉(zhuǎn)場(chǎng),交叉消失和出現(xiàn)
UIViewAnimationOptionTransitionFlipFromTop //轉(zhuǎn)場(chǎng),從上向下旋轉(zhuǎn)翻頁(yè)
UIViewAnimationOptionTransitionFlipFromBottom //轉(zhuǎn)場(chǎng),從下向上旋轉(zhuǎn)翻頁(yè)
4、Spring動(dòng)畫(huà)
iOS7.0后新增Spring動(dòng)畫(huà)(iOS系統(tǒng)動(dòng)畫(huà)大部分采用Spring Animation,適用于所有可被添加動(dòng)畫(huà)效果的屬性)
[UIView animateWithDuration:(NSTimeInterval)//動(dòng)畫(huà)持續(xù)時(shí)間
delay:(NSTimeInterval)//動(dòng)畫(huà)延遲執(zhí)行的時(shí)間
usingSpringWithDamping:(CGFloat)//震動(dòng)效果,范圍0~1,數(shù)值越小震動(dòng)效果越明顯
initialSpringVelocity:(CGFloat)//初始速度,數(shù)值越大初始速度越快
options:(UIViewAnimationOptions)//動(dòng)畫(huà)的過(guò)渡效果
animations:^{
//執(zhí)行的動(dòng)畫(huà)
}
completion:^(BOOL finished) {
//動(dòng)畫(huà)執(zhí)行完畢后的操作
}];
5、Keyframes動(dòng)畫(huà)
iOS7.0后新增關(guān)鍵幀動(dòng)畫(huà),支持屬性關(guān)鍵幀,不支持路徑關(guān)鍵幀
[UIView animateKeyframesWithDuration:(NSTimeInterval)//動(dòng)畫(huà)持續(xù)時(shí)間
delay:(NSTimeInterval)//動(dòng)畫(huà)延遲執(zhí)行的時(shí)間
options:(UIViewKeyframeAnimationOptions)//動(dòng)畫(huà)的過(guò)渡效果
animations:^{
//執(zhí)行的關(guān)鍵幀動(dòng)畫(huà)
//增加關(guān)鍵幀的方法:
[UIView addKeyframeWithRelativeStartTime:(double)//動(dòng)畫(huà)開(kāi)始的時(shí)間(占總時(shí)間的比例)
relativeDuration:(double) //動(dòng)畫(huà)持續(xù)時(shí)間(占總時(shí)間的比例)
animations:^{
//執(zhí)行的動(dòng)畫(huà)
}];
}
completion:^(BOOL finished) {
//動(dòng)畫(huà)執(zhí)行完畢后的操作
}];
-------------------------------
UIViewKeyframeAnimationOptions的枚舉值如下,可組合使用:
UIViewAnimationOptionLayoutSubviews //進(jìn)行動(dòng)畫(huà)時(shí)布局子控件
UIViewAnimationOptionAllowUserInteraction //進(jìn)行動(dòng)畫(huà)時(shí)允許用戶交互
UIViewAnimationOptionBeginFromCurrentState //從當(dāng)前狀態(tài)開(kāi)始動(dòng)畫(huà)
UIViewAnimationOptionRepeat //無(wú)限重復(fù)執(zhí)行動(dòng)畫(huà)
UIViewAnimationOptionAutoreverse //執(zhí)行動(dòng)畫(huà)回路
UIViewAnimationOptionOverrideInheritedDuration //忽略嵌套動(dòng)畫(huà)的執(zhí)行時(shí)間設(shè)置
UIViewAnimationOptionOverrideInheritedOptions //不繼承父動(dòng)畫(huà)設(shè)置
UIViewKeyframeAnimationOptionCalculationModeLinear //運(yùn)算模式 :連續(xù)
UIViewKeyframeAnimationOptionCalculationModeDiscrete //運(yùn)算模式 :離散
UIViewKeyframeAnimationOptionCalculationModePaced //運(yùn)算模式 :均勻執(zhí)行
UIViewKeyframeAnimationOptionCalculationModeCubic //運(yùn)算模式 :平滑
UIViewKeyframeAnimationOptionCalculationModeCubicPaced //運(yùn)算模式 :平滑均勻
6、轉(zhuǎn)場(chǎng)動(dòng)畫(huà)
6.1 從舊視圖轉(zhuǎn)到新視圖的動(dòng)畫(huà)效果
[UIView transitionFromView:(nonnull UIView *)
toView:(nonnull UIView *)
duration:(NSTimeInterval)
options:(UIViewAnimationOptions)
completion:^(BOOL finished) {
//動(dòng)畫(huà)執(zhí)行完畢后的操作
}];
6.2 單個(gè)視圖的過(guò)渡效果
[UIView transitionWithView:(nonnull UIView *)
duration:(NSTimeInterval)
options:(UIViewAnimationOptions)
animations:^{
//執(zhí)行的動(dòng)畫(huà)
}
completion:^(BOOL finished) {
//動(dòng)畫(huà)執(zhí)行完畢后的操作
}];