Iphone 块动画:设置UIViewAnimationOptionCurveLinear
抱歉,这是非常基本的,但我无法将AnimationOption从默认设置(EaseIn)设置为CurveLinear。这是我根据在其他线程中读到的内容尝试的:Iphone 块动画:设置UIViewAnimationOptionCurveLinear,iphone,objective-c,cocoa-touch,animation,uiview,Iphone,Objective C,Cocoa Touch,Animation,Uiview,抱歉,这是非常基本的,但我无法将AnimationOption从默认设置(EaseIn)设置为CurveLinear。这是我根据在其他线程中读到的内容尝试的: -(void)animationShadow; { [UIView animateWithDuration:4 options:UIViewAnimationOptionCurveLinear animations:^{ ... 如
-(void)animationShadow;
{
[UIView animateWithDuration:4
options:UIViewAnimationOptionCurveLinear
animations:^{
...
如果我去掉选项位,一切正常。如果没有,它就会崩溃。我肯定我没有调用正确的命令
以下是整个块动画:
-(void)animationShadow;
{
[UIView animateWithDuration:4
options:UIViewAnimationOptionCurveLinear
animations:^{
//UIViewAnimationOptionCurveLinear
// animation 1
[pageShadowView setTransform:CGAffineTransformMakeScale (3, 1)];
[pageShadowView setFrame:CGRectMake(0-350, 0, CGRectGetWidth(pageShadowView.frame), CGRectGetHeight(pageShadowView.frame))];
[UIView beginAnimations:@"pageCurlRightToLeftFinished" context:nil]; // Begin animation
//[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[pageShadowView setFrame:CGRectMake(0-280, 0, CGRectGetWidth(pageShadowView.frame), CGRectGetHeight(pageShadowView.frame))];
[UIView commitAnimations];
} completion:^(BOOL finished){ ...
编辑:
好的,我现在更新了这个,但是如果我第二次做动画,我仍然会崩溃。我收到警告:UIView可能不会响应+animateWithDuration…:
-(空)动画阴影;
{
编辑:动画初始化代码应放置在动画块的外部。该块指定视图在动画结束时应达到的最终状态
[pageShadowView setTransform:CGAffineTransformMakeScale(3, 1)];
[pageShadowView setFrame:CGRectMake(-350, ...)];
[UIView animateWithDuration:4 delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{
[pageShadowView setFrame:CGRectMake(-280, ...)];
}
completion:NULL];
如果要按顺序运行两个动画,则应将第二个动画放在
完成
块中
[UIView animateWithDuration:4 delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{ /* animation 1 */ }
completion:^(BOOL finished) {
/* animation 2 */
}];
编辑:动画初始化代码应放置在动画块的外部。该块指定视图在动画结束时应达到的最终状态
[pageShadowView setTransform:CGAffineTransformMakeScale(3, 1)];
[pageShadowView setFrame:CGRectMake(-350, ...)];
[UIView animateWithDuration:4 delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{
[pageShadowView setFrame:CGRectMake(-280, ...)];
}
completion:NULL];
如果要按顺序运行两个动画,则应将第二个动画放在
完成
块中
[UIView animateWithDuration:4 delay:0
options:UIViewAnimationOptionCurveLinear
animations:^{ /* animation 1 */ }
completion:^(BOOL finished) {
/* animation 2 */
}];
如果发现所选曲线被忽略,请检查是否使用了正确的开关集 有一种称为UIViewAnimationCurveLinear(对于旧方法)和UIViewAnimationOptionCurveLinear(对于块方法)并且很容易将它们混合在一起。有相应的等效对用于轻松输入、轻松输出等
这让我大吃一惊,因此我想我应该确保其他人可以轻松看到这些信息。如果您发现所选曲线被忽略,请检查您是否使用了正确的开关集 有一种称为UIViewAnimationCurveLinear(对于旧方法)和UIViewAnimationOptionCurveLinear(对于块方法)并且很容易将它们混合在一起。有相应的等效对用于轻松输入、轻松输出等
这让我很吃惊,所以我想我应该确保其他人可以很容易地看到这些信息。@KeenyTM:谢谢你的回答。事实上,这就是我要做的。我刚刚在这里展示了第一个动画。我不需要将[pageShadowView setTransform…等放到[UIView commitAnimations]之前吗;进入您标记为/*animation 1*/?我想我还不了解块动画的概念。您是说我在上面的代码中有两个动画?我只是试图定义动画的起点(x=-350)和终点(x=-280),所以我认为这只是一个动画,即从x=-350到x=-280。谢谢你的帮助!@KennyTm:非常感谢你的帮助。我想我现在明白了这个概念,但我仍然不确定第二个动画。我更新了我的代码——请参见上文——它仍然崩溃。我确定我没有以我应该的方式启动第二个动画。@n.ever:您缺少了延迟:0@KennyTm:我仍然得到UIView可能没有响应+animateWithDuration…:警告];底部三行(我在上面标记了它)。我缺少了什么?很抱歉这么痛苦。
[UIView animateWithDuration:kPageCurlSpeed延迟:0选项:UIViewAnimationOptionCurveLinear动画:^{/…}];
应该做这项工作,不是吗?@n.ever:所有5个参数(持续时间、延迟、选项、动画、完成)是必需的。即使它们中的任何一个为NULL或0,您也不能忽略或重新排序。这通常适用于所有Objective-C方法。@KeenyTM:谢谢您的回答。事实上,这就是我要做的。我刚刚在这里展示了第一个动画。我是否不需要将[pageShadowView setTransform…等放置到[UIView commitAnimations];进入您标记为/*动画1*/?我想我还不了解块动画的概念。您是说我在上面的代码中有两个动画?我只是尝试定义动画的起点(x=-350)和终点(x=-280),所以我认为这只是一个动画,即从x=-350到x=-280。谢谢你的帮助!@KennyTm:非常感谢你的帮助。我想我现在明白了这个概念,但我仍然不确定第二个动画。我更新了我的代码——请参见上文——它仍然崩溃。我确定我没有以我应该的方式启动第二个动画。@n.ever:您缺少了延迟:0@KennyTm:我仍然得到UIView可能没有响应+animateWithDuration…:警告];底部三行(我在上面标记了它)。我缺少了什么?很抱歉这么痛苦。[UIView animateWithDuration:kPageCurlSpeed延迟:0选项:UIViewAnimationOptionCurveLinear动画:^{/…}];
应该做这项工作,不是吗?@n.ever:所有5个参数(持续时间、延迟、选项、动画、完成)都是必需的。即使其中任何参数为NULL或0,也不能忽略或重新排序。这通常适用于所有Objective-C方法。