第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Objective-C-CABasicAnimation在動畫之后應(yīng)用更改嗎?

Objective-C-CABasicAnimation在動畫之后應(yīng)用更改嗎?

梵蒂岡之花 2019-12-13 09:36:39
我正在使用CABasicAnimation移動和調(diào)整圖像視圖的大小。我希望將圖像視圖添加到超級視圖中,進行動畫處理,然后從超級視圖中刪除。為了實現(xiàn)這一點,我正在監(jiān)聽my的委托調(diào)用CAAnimationGroup,并在調(diào)用它后立即從超級視圖中刪除圖像視圖。問題在于,有時圖像在從超級視圖中刪除之前會在初始位置閃爍。避免這種行為的最佳方法是什么?CAAnimationGroup *animGroup = [CAAnimationGroup animation];    animGroup.animations = [NSArray arrayWithObjects:moveAnim, scaleAnim, opacityAnim, nil];    animGroup.duration = .5;    animGroup.delegate = self;    [imageView.layer addAnimation:animGroup forKey:nil];
查看完整描述

3 回答

?
翻過高山走不出你

TA貢獻1875條經(jīng)驗 獲得超3個贊

將動畫添加到圖層時,該動畫不會更改圖層的屬性。而是,系統(tǒng)創(chuàng)建該層的副本。原始層稱為模型層,副本層稱為表示層。表示層的屬性隨動畫的進行而變化,但是模型層的屬性保持不變。


刪除動畫時,系統(tǒng)將破壞表示層,僅保留模型層,然后模型層的屬性將控制該層的繪制方式。因此,如果模型層的屬性與表示層屬性的最終動畫值不匹配,則該層將立即重置為其在動畫之前的外觀。


要解決此問題,您需要將模型圖層的屬性設(shè)置為動畫的最終值,然后將動畫添加到圖層。您要按此順序進行操作,因為更改圖層屬性可以為該屬性添加隱式動畫,這將與您要顯式添加的動畫沖突。您要確保您的顯式動畫覆蓋隱式動畫。


那你怎么做這些呢?基本配方如下所示:


CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];

animation.fromValue = [NSValue valueWithCGPoint:myLayer.position];

layer.position = newPosition; // HERE I UPDATE THE MODEL LAYER'S PROPERTY

animation.toValue = [NSValue valueWithCGPoint:myLayer.position];

animation.duration = .5;

[myLayer addAnimation:animation forKey:animation.keyPath];

我沒有使用動畫組,所以我不完全知道您可能需要更改什么。我只是將每個動畫分別添加到圖層。


我還發(fā)現(xiàn)使用該+[CATransaction setCompletionBlock:]方法為一個或多個動畫設(shè)置完成處理程序比嘗試使用動畫的委托更容易。設(shè)置事務(wù)的完成塊,然后添加動畫:


[CATransaction begin]; {

    [CATransaction setCompletionBlock:^{

        [self.imageView removeFromSuperview];

    }];

    [self addPositionAnimation];

    [self addScaleAnimation];

    [self addOpacityAnimation];

} [CATransaction commit];


查看完整回答
反對 回復(fù) 2019-12-13
?
慕雪6442864

TA貢獻1812條經(jīng)驗 獲得超5個贊

完成后,會自動刪除CAAnimations。有一個屬性removedOnCompletion對此進行控制。您應(yīng)該將其設(shè)置為NO

此外,還有一個名為的fillMode控件,可以控制動畫持續(xù)時間之前和之后的行為。這是在上聲明的屬性CAMediaTimingCAAnimation符合)。您應(yīng)該將此設(shè)置為kCAFillModeForwards。

通過這兩個更改,動畫應(yīng)在完成后繼續(xù)存在。但是,我不知道您是否需要在組中或在組中的單個動畫上或同時在兩者上進行更改。


查看完整回答
反對 回復(fù) 2019-12-13
  • 3 回答
  • 0 關(guān)注
  • 706 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號