我有一個問題,我不明白UIViews和核心動畫。以下是我想要做的:UIView在其圖層被動畫後顯示不正確
- 一個小視圖以大視圖的形式呈現爲其子視圖之一。
- 當我點擊該視圖中的按鈕時,視圖應該最小化並移動到指定的CGRect。
- 然後將視圖從其超級視圖中移除。
我第一次出現,最小化和移動並刪除視圖,一切工作正常。但是,當我再次呈現視圖時,它將顯示在修改後的位置(儘管它應該通過調用theView.frame = CGRectMake(600.0, 160.0, 339.0, 327.0);
設置在原始位置),而包含在所有不同的響應者元素(按鈕,文字瀏覽等)看法就好像他們在原來的位置一樣。這就像視圖和圖層通過動畫不同步,我不知道如何讓它們重新同步。
像self.view.layer.frame = CGRectMake(600.0, 160.0, 339.0, 327.0);
之類的東西沒有得到任何正確的。
我儘量減少並移動下面的動畫代碼給出:
[CATransaction flush];
CABasicAnimation *scale, *translateX, *translateY;
CAAnimationGroup *group = [CAAnimationGroup animation];
group.delegate = delegate;
group.duration = duration;
scale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
translateX = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];
translateY = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
scale.toValue = [NSNumber numberWithFloat:0.13];
translateX.toValue = [NSNumber numberWithFloat:137.0];
translateY.toValue = [NSNumber numberWithFloat:-290.0];
group.animations = [NSArray arrayWithObjects: scale, translateX, translateY, nil];
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = NO;
[theView.layer addAnimation:group forKey:@"MyAnimation"];
如何讓層回動畫後有何看法?
哇,那'removeAnimationForKey:'正是我的代碼中所缺少的。謝謝,它現在效果很好! – KPM 2010-06-23 10:53:16