我想要对滚动视图中的一些子视图的位置进行动画处理。我希望创建一个特定效果,使它们滑入时具有反弹效果,就像当滚动视图到达末尾时看起来的那样,只是相反的方向。之前,我通过更改UIView上的frame使用隐式动画,但当它们滑入时,它看起来太机械了。无论如何,我无法让它动画改变框架的原点。我不确定自己错过了什么,因为如果我切换正在进行动画处理的内容(将第一个//*更改为/*),仅通过更改透明度就可以很好地工作。
- (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)];
}
center
进行动画效果吗? - jscs