Iphone 块动画:设置UIViewAnimationOptionCurveLinear

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:^{ ... 如

抱歉,这是非常基本的,但我无法将AnimationOption从默认设置(EaseIn)设置为CurveLinear。这是我根据在其他线程中读到的内容尝试的:

    -(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方法。