Layer Animations基本使用

今天寫(xiě)Layer Animations是為了記錄自己學(xué)習(xí)的過(guò)程。如有想學(xué)習(xí)UI view Animation 的可以看看iOS動(dòng)畫(huà)之UIView動(dòng)畫(huà),IOS開(kāi)發(fā)-UIView之動(dòng)畫(huà)效果的實(shí)現(xiàn)方法(合集)

Core Animation是直接作用在CALayer上的(并非UIView上)非常強(qiáng)大的跨Mac OS X和iOS平臺(tái)的動(dòng)畫(huà)處理API罪治,Core Animation的動(dòng)畫(huà)執(zhí)行過(guò)程都是在后臺(tái)操作的,不會(huì)阻塞主線(xiàn)程乎澄。

核心動(dòng)畫(huà)繼承結(jié)構(gòu)

繼承結(jié)構(gòu)

如上圖 ,我們能看出動(dòng)畫(huà)體協(xié)的結(jié)構(gòu)了测摔。
我們可以看到CABasicAnimation置济、CAkeyFrameanimation都是繼承CAPropertyAnimation,那他們倆有什么區(qū)別呢锋八?

詳解

  1. CABasicAnimation提供了最基礎(chǔ)的動(dòng)畫(huà)屬性設(shè)置浙于,是簡(jiǎn)單的keyframe動(dòng)畫(huà)性能。CABasicAnimation可以看做是一種CAKeyframeAnimation的簡(jiǎn)單動(dòng)畫(huà)挟纱,因?yàn)樗挥蓄^尾的關(guān)鍵幀(keyframe)羞酗。
  1. CAKeyframeAnimation提供了通用的keyframe動(dòng)畫(huà)功能層的屬性給我們使用,它允許我們?cè)O(shè)置一個(gè)特定的數(shù)組紊服,這個(gè)數(shù)組是動(dòng)畫(huà)在運(yùn)動(dòng)時(shí)的值檀轨。也就是說(shuō)胸竞,CAKeyframeAnimation支持動(dòng)畫(huà)的多個(gè)值設(shè)置。

我們可以說(shuō) CABasicAnimation是對(duì)CAkeyFrameanimation一個(gè)簡(jiǎn)單的封裝参萄。
下表是使用動(dòng)畫(huà)的基本屬性

屬性 說(shuō)明
KeyPath 動(dòng)畫(huà)變化的屬性(見(jiàn)圖2-1 卫枝、2-2)
duration 動(dòng)畫(huà)執(zhí)行的時(shí)長(zhǎng)
repeatCount 重復(fù)的次數(shù)。無(wú)限循環(huán)設(shè)置為 HUGE_VALF
repeatDuration 設(shè)置動(dòng)畫(huà)的時(shí)間讹挎。在該時(shí)間內(nèi)動(dòng)畫(huà)一直執(zhí)行剃盾,不計(jì)次數(shù)。
beginTime 指定動(dòng)畫(huà)開(kāi)始的時(shí)間淤袜。從開(kāi)始延遲幾秒的話(huà),設(shè)置為【CACurrentMediaTime() + 秒數(shù)】 的方式
timingFunction 速度控制函數(shù)衰伯,控制動(dòng)畫(huà)運(yùn)行的節(jié)奏 詳見(jiàn)(圖4)
autoreverses 動(dòng)畫(huà)結(jié)束時(shí)是否執(zhí)行逆動(dòng)畫(huà)
fromValue 起始值
toValue 結(jié)束時(shí)的值(絕對(duì)坐標(biāo))
byValue 相對(duì)起始值的改變量
speed 動(dòng)畫(huà)的速度
removedOnCompletion 默認(rèn)為YES铡羡,代表動(dòng)畫(huà)執(zhí)行完畢后就從圖層上移除,圖形會(huì)恢復(fù)到動(dòng)畫(huà)執(zhí)行前的狀態(tài)意鲸。如果想讓圖層保持顯示動(dòng)畫(huà)執(zhí)行后的狀態(tài)烦周,那就設(shè)置為NO,不過(guò)還要設(shè)置fillMode為kCAFillModeForwards
fillMode 決定當(dāng)前對(duì)象在非active時(shí)間段的行為怎顾。比如動(dòng)畫(huà)開(kāi)始之前或者動(dòng)畫(huà)結(jié)束之读慎,詳見(jiàn)“圖3”
values NSArray對(duì)象。里面的元素稱(chēng)為“關(guān)鍵幀”(keyframe)槐雾。動(dòng)畫(huà)對(duì)象會(huì)在指定的時(shí)間(duration)內(nèi)夭委,依次顯示values數(shù)組中的每一個(gè)關(guān)鍵幀
keyTimes 可以為對(duì)應(yīng)的關(guān)鍵幀指定對(duì)應(yīng)的時(shí)間點(diǎn),其取值范圍為0到1.0募强,例如keyAnima1.keyTimes = @[@0.0,@0.1,@0.5,@0.7,@1.0]株灸,keyTimes中的每一個(gè)時(shí)間值都對(duì)應(yīng)values中的每一幀。如果沒(méi)有設(shè)置keyTimes擎值,各個(gè)關(guān)鍵幀的時(shí)間是平分的慌烧,keyTimes 是和 values一起的。
path 可以設(shè)置一個(gè)CGPathRef鸠儿、CGMutablePathRef屹蚊,讓圖層按照路徑軌跡移動(dòng)。path只對(duì)CALayer的anchorPoint和position起作用进每。如果設(shè)置了path汹粤,那么values將被忽略
delegate 動(dòng)畫(huà)代理,動(dòng)畫(huà)開(kāi)始 和 動(dòng)畫(huà)完成(該代理是strong類(lèi)型可使用YYWeakProxyself.animation.delegate = [YYWeakProxy proxyWithTarget:self];
圖 2-1
圖 2-2
圖3
圖4

以上圖片均來(lái)自網(wǎng)絡(luò)

CABasicAnimation示例代碼

   CABasicAnimation * animation = [CABasicAnimation animation];
    animation.keyPath = @"position";//KVC的方式來(lái)訪(fǎng)問(wèn)屬性
    animation.fromValue =[NSValue valueWithCGPoint:CGPointMake(100, 100)];;//該屬性開(kāi)始的值
//    animation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 300)];;//結(jié)束的值
    animation.byValue = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
    animation.duration = 2;//持續(xù)時(shí)間
    animation.repeatCount = HUGE_VALF;//無(wú)限循環(huán)
    animation.speed = 1;//速度
//    animation.repeatDuration = 10;//在多久哪動(dòng)畫(huà)有效
    animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];//結(jié)束函數(shù)
    animation.autoreverses= YES;//回歸是否是動(dòng)畫(huà)形式
    [_maskView.layer addAnimation:animation forKey:@"ad"];//添加動(dòng)畫(huà)

CAAnimationGroup的使用

此類(lèi)就是一個(gè)動(dòng)畫(huà)數(shù)組自己沒(méi)有執(zhí)行動(dòng)畫(huà)的能力田晚,就是來(lái)做組合動(dòng)畫(huà)玄括。

    CABasicAnimation *positionAnima = [CABasicAnimation animationWithKeyPath:@"position.y"];
    positionAnima.fromValue = @(self.maskView.center.y);
    positionAnima.toValue = @(self.maskView.center.y-30);
    positionAnima.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
    
    
    CABasicAnimation *transformAnima = [CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
    transformAnima.fromValue = @(0);
    transformAnima.toValue = @(M_PI);
    transformAnima.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    
    CAAnimationGroup *animaGroup = [CAAnimationGroup animation];
    animaGroup.duration = 2.0f;
    animaGroup.fillMode = kCAFillModeForwards;
    animaGroup.removedOnCompletion = NO;
    animaGroup.animations = @[positionAnima,transformAnima];
    
    [self.maskView.layer addAnimation:animaGroup forKey:@"Animation"];

CASpringAnimation阻尼動(dòng)畫(huà)

通俗的說(shuō)就是彈簧效果,使用起來(lái)很簡(jiǎn)單。

屬性 說(shuō)明
mass 這個(gè)屬性設(shè)置彈簧重物的質(zhì)量 會(huì)影響慣性 必須大于0 默認(rèn)為1
stiffness 設(shè)置彈簧的剛度系數(shù)肉瓦,必須大于0 默認(rèn)為100 這個(gè)越大 則回彈越快
damping 阻尼系數(shù) 默認(rèn)為10 必須大于0 這個(gè)值越大 回彈的幅度越小
initialVelocity 初始速度
settlingDuration 獲取動(dòng)畫(huà)停下來(lái)需要的時(shí)間

CATransition轉(zhuǎn)場(chǎng)動(dòng)畫(huà)

屬性 說(shuō)明
type 指定預(yù)定義的過(guò)渡效果遭京。默認(rèn)為kCATransitionFade,如果指定了filter胃惜,那么該屬性無(wú)效。
subtype 指定預(yù)定義的過(guò)渡方向哪雕。默認(rèn)為nil,如果指定了filter船殉,那么該屬性無(wú)效。
startProgress 定義過(guò)度的開(kāi)始點(diǎn)
endProgress 定義過(guò)渡的結(jié)束點(diǎn).值必須大于或者等于開(kāi)始點(diǎn)
filter 為動(dòng)畫(huà)添加一個(gè)可選的濾鏡.如果指定斯嚎,那么指定的filter必須同時(shí)支持x和y利虫,否則該filter將不起作用。

轉(zhuǎn)場(chǎng)動(dòng)畫(huà)

  CATransition *animation = [CATransition animation];
//    //動(dòng)畫(huà)時(shí)間
    animation.duration = 5.0f;
    //display mode, slow at beginning and end
    animation.timingFunction = UIViewAnimationCurveEaseInOut;
    //在動(dòng)畫(huà)執(zhí)行完時(shí)是否被移除
    animation.removedOnCompletion = NO;
    animation.repeatCount = 100;
    //過(guò)渡效果
    animation.type = @"pageCurl";
    //過(guò)渡方向
    animation.subtype = kCATransitionFromRight;
    animation.fillMode = kCAFillModeForwards;
    //animation.filter = filter;
    //動(dòng)畫(huà)停止(在整體動(dòng)畫(huà)的百分比).
    animation.endProgress = 0.7;
    [_maskView.layer addAnimation:animation forKey:nil];

加濾鏡轉(zhuǎn)場(chǎng)動(dòng)畫(huà)

加濾鏡
 //將UIImage轉(zhuǎn)換成CIImage
    CIImage *ciImage = [[CIImage alloc] initWithImage:[UIImage imageNamed:@"白胡子.jpg"]];
    //創(chuàng)建濾鏡
    CIFilter *filter = [CIFilter filterWithName:@"CIPhotoEffectMono" keysAndValues:kCIInputImageKey, ciImage, nil];
    //已有的值不改變堡僻,其他的設(shè)為默認(rèn)值
    [filter setDefaults];
    //獲取繪制上下文
    CIContext *context = [CIContext contextWithOptions:nil];
    //渲染并輸出CIImage
    CIImage *outputImage = [filter outputImage];
    //創(chuàng)建CGImage句柄
    CGImageRef cgImage = [context createCGImage:outputImage fromRect:[outputImage extent]];
    //獲取圖片
    UIImage *image = [UIImage imageWithCGImage:cgImage];
    //釋放CGImage句柄
    CGImageRelease(cgImage);
    self.maskView.image = image;
   CATransition *animation = [CATransition animation];
//    //動(dòng)畫(huà)時(shí)間
    animation.duration = 5.0f;
    //display mode, slow at beginning and end
    animation.timingFunction = UIViewAnimationCurveEaseInOut;
    //在動(dòng)畫(huà)執(zhí)行完時(shí)是否被移除
    animation.removedOnCompletion = NO;
    animation.repeatCount = 100;
    //過(guò)渡效果
//    animation.type = @"pageCurl";
//    //過(guò)渡方向
//    animation.subtype = kCATransitionFromRight;
//    //暫時(shí)不知,感覺(jué)與Progress一起用的,如果不加,Progress好像沒(méi)有效果
//    animation.fillMode = kCAFillModeForwards;
    animation.filter = filter;
//    //動(dòng)畫(huà)停止(在整體動(dòng)畫(huà)的百分比).
//    animation.endProgress = 0.7;
    [_maskView.layer addAnimation:animation forKey:nil];

過(guò)濾器必須實(shí)現(xiàn)‘inputImage’,‘inputTargetImage’和‘inputTime輸入鍵和“outputImage”輸出的關(guān)鍵糠惫。

CAKeyframeAnimation 關(guān)鍵幀動(dòng)畫(huà)

屬性 說(shuō)明
values 里面的元素稱(chēng)為”關(guān)鍵幀”(keyframe)。動(dòng)畫(huà)對(duì)象會(huì)在指定的時(shí)間(duration)內(nèi)钉疫,依次顯示values數(shù)組中的每一個(gè)關(guān)鍵幀
path 可以設(shè)置一個(gè)CGPathRef\CGMutablePathRef,讓層跟著路徑移動(dòng)硼讽。
keyTimes 可以為對(duì)應(yīng)的關(guān)鍵幀指定對(duì)應(yīng)的時(shí)間點(diǎn),其取值范圍為0到1.0,keyTimes中的每一個(gè)時(shí)間值都對(duì)應(yīng)values中的每一幀.當(dāng)keyTimes沒(méi)有設(shè)置的時(shí)候,各個(gè)關(guān)鍵幀的時(shí)間是平分的。這個(gè)屬性的設(shè)定值要與calculationMode屬性相結(jié)合
calculationMode 計(jì)算模式
timingFunctions 可以為對(duì)應(yīng)的關(guān)鍵幀指定--速度控制函數(shù)牲阁,控制動(dòng)畫(huà)運(yùn)行的節(jié)奏 詳見(jiàn)(圖4)
rotationMode 旋轉(zhuǎn)模式 默認(rèn)nil 設(shè)置后可自動(dòng)旋轉(zhuǎn)
tensionValues 暫時(shí)不知怎么用
continuityValues 暫時(shí)不只怎么用
biasValues 暫時(shí)不只怎么用

The appropriate values in the keyTimes array are dependent on the calculationMode property.

  1. If the calculationMode is set to kCAAnimationLinear, the first value in the array must be 0.0 and the last value must be 1.0. Values are interpolated between the specified key times.
  2. If the calculationMode is set to kCAAnimationDiscrete, the first value in the array must be 0.0.
  3. If the calculationMode is set to kCAAnimationPaced or kCAAnimationCubicPaced, the keyTimes array is ignored固阁。

不知道怎么用等了解之后再來(lái)更新
kCAAnimationCubic對(duì)關(guān)鍵幀為坐標(biāo)點(diǎn)的關(guān)鍵幀進(jìn)行圓滑曲線(xiàn)相連后插值計(jì)算,曲線(xiàn)的形狀可以通過(guò)tensionValues,continuityValues,biasValues來(lái)進(jìn)行調(diào)整自定義,使得運(yùn)動(dòng)的軌跡變得圓滑;

用 path來(lái)繪制動(dòng)畫(huà)路徑

2016-11-23 13_45_20.gif
  CGMutablePathRef
    path = CGPathCreateMutable();
    //將路徑的起點(diǎn)定位到 (50  120)
    CGPathMoveToPoint(path,NULL,50.0,120.0);
    //下面5行添加5條直線(xiàn)的路徑到path中
    CGPathAddLineToPoint(path,
                         NULL, 60, 130);
    CGPathAddLineToPoint(path,
                         NULL, 70, 140);
    CGPathAddLineToPoint(path,
                         NULL, 80, 150);
    CGPathAddLineToPoint(path,
                         NULL, 90, 160);
    CGPathAddLineToPoint(path,
                         NULL, 100, 170);
    //下面四行添加四條曲線(xiàn)路徑到path
    CGPathAddCurveToPoint(path,NULL,50.0,275.0,150.0,275.0,70.0,120.0);
    CGPathAddCurveToPoint(path,NULL,150.0,275.0,250.0,275.0,90.0,120.0);
    CGPathAddCurveToPoint(path,NULL,250.0,275.0,350.0,275.0,110.0,120.0);
    CGPathAddCurveToPoint(path,NULL,350.0,275.0,450.0,275.0,130.0,120.0);
    CAKeyframeAnimation *KeyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
    KeyframeAnimation.path = path;
    KeyframeAnimation.duration = 5;
    KeyframeAnimation.calculationMode = kCAAnimationCubic;
    KeyframeAnimation.rotationMode = kCAAnimationRotateAuto;
//    KeyframeAnimation.keyTimes
    [_maskView.layer addAnimation:KeyframeAnimation forKey:nil];

values動(dòng)畫(huà)

 CGPoint
    p1=CGPointMake(50, 120);
    CGPoint
    p2=CGPointMake(80, 170);
    CGPoint
    p3=CGPointMake(30, 100);
    CGPoint
    p4=CGPointMake(100, 190);
    CGPoint
    p5=CGPointMake(200, 10);
    NSArray
    *values=[NSArray arrayWithObjects:[NSValue valueWithCGPoint:p1],[NSValue valueWithCGPoint:p2],[NSValue valueWithCGPoint:p3],[NSValue valueWithCGPoint:p4],[NSValue valueWithCGPoint:p5], nil];
    CAKeyframeAnimation *KeyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
//    KeyframeAnimation.path = path;
    KeyframeAnimation.values = values;
    KeyframeAnimation.duration = 5;
    KeyframeAnimation.calculationMode = kCAAnimationCubic;
    KeyframeAnimation.rotationMode = kCAAnimationRotateAuto;
//    KeyframeAnimation.keyTimes
    [_maskView.layer addAnimation:KeyframeAnimation forKey:nil];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市城菊,隨后出現(xiàn)的幾起案子备燃,更是在濱河造成了極大的恐慌,老刑警劉巖凌唬,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件并齐,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡客税,警方通過(guò)查閱死者的電腦和手機(jī)冀膝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)霎挟,“玉大人窝剖,你說(shuō)我怎么就攤上這事∷重玻” “怎么了赐纱?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)熬北。 經(jīng)常有香客問(wèn)我疙描,道長(zhǎng),這世上最難降的妖魔是什么讶隐? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任起胰,我火速辦了婚禮,結(jié)果婚禮上巫延,老公的妹妹穿的比我還像新娘效五。我一直安慰自己地消,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布畏妖。 她就那樣靜靜地躺著脉执,像睡著了一般。 火紅的嫁衣襯著肌膚如雪戒劫。 梳的紋絲不亂的頭發(fā)上半夷,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音迅细,去河邊找鬼巫橄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛茵典,可吹牛的內(nèi)容都是我干的湘换。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼敬尺,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了贴浙?” 一聲冷哼從身側(cè)響起砂吞,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎崎溃,沒(méi)想到半個(gè)月后蜻直,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡袁串,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年概而,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囱修。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡赎瑰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出破镰,到底是詐尸還是另有隱情餐曼,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布鲜漩,位于F島的核電站源譬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏孕似。R本人自食惡果不足惜踩娘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望喉祭。 院中可真熱鬧养渴,春花似錦雷绢、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至傻工,卻和暖如春霞溪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背中捆。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工鸯匹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泄伪。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓殴蓬,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蟋滴。 傳聞我的和親對(duì)象是個(gè)殘疾皇子染厅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • 在iOS實(shí)際開(kāi)發(fā)中常用的動(dòng)畫(huà)無(wú)非是以下四種:UIView動(dòng)畫(huà),核心動(dòng)畫(huà)津函,幀動(dòng)畫(huà)肖粮,自定義轉(zhuǎn)場(chǎng)動(dòng)畫(huà)。 1.UIView...
    請(qǐng)叫我周小帥閱讀 3,082評(píng)論 1 23
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果尔苦,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜涩馆,今天將帶大家一窺iOS動(dòng)畫(huà)全貌。在這里你可以看...
    F麥子閱讀 5,104評(píng)論 5 13
  • 在iOS中隨處都可以看到絢麗的動(dòng)畫(huà)效果允坚,實(shí)現(xiàn)這些動(dòng)畫(huà)的過(guò)程并不復(fù)雜魂那,今天將帶大家一窺ios動(dòng)畫(huà)全貌。在這里你可以看...
    每天刷兩次牙閱讀 8,471評(píng)論 6 30
  • 先看看CAAnimation動(dòng)畫(huà)的繼承結(jié)構(gòu) CAAnimation{ CAPropertyAnimation { ...
    時(shí)間不會(huì)倒著走閱讀 1,644評(píng)論 0 1
  • 那個(gè)賀斌斩芭,第三份懺悔,我是有多差勁讓你生了這么多次氣乐疆? 愛(ài)一個(gè)人就會(huì)變得窩囊划乖。 怕分,怕離挤土,怕你愛(ài)上別人琴庵。 怕我的...
    吳彥祖_941b閱讀 318評(píng)論 0 1