gpt4 book ai didi

IOS 动画不适用于我的动画 block

转载 作者:可可西里 更新时间:2023-11-01 06:25:16 26 4
gpt4 key购买 nike

我试图让一个红色方 block 从 View 顶部移动到 View 底部的随机位置,然后在随机位置再次返回顶部。该应用程序首先将以下代码放入[super viewLoad]:

[redSquare setCenter:CGPointMake(25,25)];

(将红色方 block View 设置为 50 x 50,这将启动左上角红色方 block 的应用程序)。

动画的第一部分运行良好 - 红色方 block 动画到页面底部的随机位置。但是,它会跳到顶部的随机位置而没有动画。请帮助我做错了什么或任何其他解决方案来帮助这个简单的动画。

 -(void)moving{

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseIn animations:^{
int randomx = arc4random() % 295;
[redSquare setCenter:CGPointMake(randomx,435)];


} completion:^(BOOL finished) {

[redSquare setCenter:CGPointMake(redSquare.frame.origin.x,25)];
}];

}

最佳答案

您的完成 block 只是设置新位置。你不是让它回到顶部的动画:

试试这个,而不是

-(void)moving {

[UIView animateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseIn animations:^{
int randomx = arc4random() % 295;
[redSquare setCenter:CGPointMake(randomx,435)];
} completion:^(BOOL finished) {
[UIViewAnimateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseIn animations:^{
[redSquare setCenter:CGPointMake(redSquare.frame.origin.x,25)];
} completion: NULL
}];

}

编辑添加

的确,子级别可能会让人感到困惑,但是如果您将 block 与方法分开定义,则可以使生活变得简单并减少缩进。

例如,您可以将上面的内容重写为:

-(void)moving {

workBlk_t animationBlock = ^ {
int randomx = arc4random() % 295;
[redSquare setCenter:CGPointMake(randomx,435)];
};

void (^completionBlock)(BOOL finished) = ^{
[UIViewAnimateWithDuration:1.0 delay:0.0 options:UIViewAnimationCurveEaseIn animations:^{
[redSquare setCenter:CGPointMake(redSquare.frame.origin.x,25)];
} completion : NULL
};

[UIView animateWithDuration:1.0
delay:0.0
options:UIViewAnimationCurveEaseIn
animations:animationBlock
completion:completionBlock
}];

}

关于IOS 动画不适用于我的动画 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12578275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com