我試圖在scrollview中設置一些子視圖的位置。我想創建一個特定的效果,因爲他們滑入。我只是通過更改UIView上的框架來使用隱式動畫,但是當它們滑入時它看起來太機器人。所以我希望創建一個反彈效果,讓它們在幻燈片中滑入,稍微走遠,然後返回到其預期的位置,非常接近滾動視圖到達結尾時的樣子,恰好相反。CoreAnimation動畫幀
無論如何,我不能讓它動畫改變框架的起源。我不確定我錯過了什麼,因爲如果我切換出正在進行動畫製作(將第一個// *改爲/ *),它可以很好地改變不透明度。
- (void)slideInStories;
{
float scrollViewContentWidth = 0;
for (StoryViewController *storyController in storyControllers) {
NSMutableArray *animationPoints = [NSMutableArray array];
CGRect viewFrame = storyController.view.frame;
//*
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"frame"];
[animationPoints addObject:[NSValue valueWithCGRect:viewFrame]];
viewFrame.origin.x = scrollViewContentWidth - 10;
[animationPoints addObject:[NSValue valueWithCGRect:viewFrame]];
viewFrame.origin.x = scrollViewContentWidth;
[animationPoints addObject:[NSValue valueWithCGRect:viewFrame]];
/*/
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"opacity"];
[animationPoints addObject:[NSNumber numberWithFloat:0.75]];
[animationPoints addObject:[NSNumber numberWithFloat:0.0]];
[animationPoints addObject:[NSNumber numberWithFloat:0.75]];
//*/
[animation setValues:animationPoints];
[animation setDuration:4.0];
viewFrame.origin.x = scrollViewContentWidth;
scrollViewContentWidth += viewFrame.size.width;
[storyController.view.layer setFrame:viewFrame];
[storyController.view.layer setOpacity:1.0];
[storyController.view.layer addAnimation:animation forKey:nil];
}
[scrollView setContentSize:CGSizeMake(scrollViewContentWidth, 187.0f)];
}
您是否嘗試過,只是爲了踢腿,而不是用動畫中心? – 2011-05-18 06:14:31
@Josh Caswell - 是的,我可以做的很好。 – dustins 2011-05-18 12:29:23