gpt4 book ai didi

ios - 如何使用 UIViewAnimationOptionRepeat 自动重复一组链接的 UIView 动画

转载 作者:行者123 更新时间:2023-11-29 03:00:31 25 4
gpt4 key购买 nike

我正在尝试使用标志 UIViewAnimationOptionRepeat 链接一组 UIView animateWithDuration:我试图重复的动画步骤是:

  1. UIView 向左移动 100 像素设置动画
  2. 淡出 UIView(不透明度 '0')
  3. 淡出(不可见)时,将其移回原始位置(向右 100 像素)
  4. 淡化 UIView(将不透明度设置为 '1')
  5. 使用标志 UIViewAnimationOptionRepeat 重复动画

我无法重复整个动画链 - 只能重复最上面的动画。

我试过的代码是这样的:

[UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionRepeat animations:^{
self.handImageView.frame = CGRectMoveByXPixels(self.handImageView.frame, -100);
[UIView animateWithDuration:0.5 delay:1 options:0 animations:^{
self.handImageView.alpha = 0;
} completion:^(BOOL finished) {
self.handImageView.frame = CGRectMoveByXPixels(self.handImageView.frame, 100);
[UIView animateWithDuration:0.5 delay:0 options:0 animations:^{
self.handImageView.alpha = 1;
} completion:^(BOOL finished) {

}];
}];
} completion:^(BOOL finished) {

}];

最佳答案

问题是使用 UIViewAnimationOptionRepeat 的动画永远不会结束,因此永远不会调用 completion block 。但是,您可以使用 performSelector 方法重复动画,如下面的代码所示。

- (void)repeatingAnimationForView:(UIView *)view
{
[UIView animateWithDuration:1 delay:0 options:0
animations:^{ view.frame = CGRectMoveByXPixels(view.frame, -100); }
completion:^(BOOL finished) { if ( finished ) {

[UIView animateWithDuration:0.5 delay:0 options:0
animations:^{ view.alpha = 0; }
completion:^(BOOL finished) { if ( finished ) {

view.frame = CGRectMoveByXPixels(view.frame, 100);

[UIView animateWithDuration:0.5 delay:0 options:0
animations:^{ view.alpha = 1; }
completion:^(BOOL finished) { if ( finished ) {

if ( self.enableRepeatingAnimation )
[self performSelector:@selector(repeatingAnimationForView:) withObject:view afterDelay:0];

}}]; }}]; }}];
}

- (void)stopRepeatingAnimationForView:(UIView *)view
{
self.enableRepeatingAnimation = NO;
[view.layer removeAllAnimations];
view.frame = CGRectMake( 100, 137, 80, 50 );
view.alpha = 1;
}

- (void)startRepeatingAnimationForView:(UIView *)view
{
self.enableRepeatingAnimation = YES;
[self repeatingAnimationForView:view];
}

要立即停止动画,请调用 stopRepeatingAnimationForView 方法,如上所示。要在循环结束时停止动画,只需将 self.enableRepeatingAnimation 设置为 NO

关于ios - 如何使用 UIViewAnimationOptionRepeat 自动重复一组链接的 UIView 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23360940/

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