关于如何同时为不同的 UIView 设置动画的方法

Recipes on how to animate different UIViews at the same time

我有不同的 UIView 应该同时设置动画。我的实际做法如下:

- (void)moveRectangles {

    NSUInteger count = [self.dataSource numberOfRectangles];

    for (NSUInteger i = 0; i < count; i++) {
        [self snapToPositionWithIndex:i];
    }
}

其中 snapToPositionWithIndex: 的实现方式如下。

- (void)snapToPositionWithIndex:(NSUInteger)index {

    CGPoint point = [[self.positions objectAtIndex:index] CGPointValue];
    UIView *rectangleView = [self.items objectAtIndex:index];

    [UIView animateWithDuration:self.animationTimeInterval animations:^{
        rectangleView.center = point;

    } completion:nil];
}

如您所见,我为每个矩形创建了一个动画块。这是应该遵循的正确方法,还是有更简单、更高效的方法来实现这一目标?如果我有很多视图要移动怎么办?

我认为你用上面的代码做得很好,我唯一想替换的是:-

for (NSUInteger i = 0; i < count; i++)

快速枚举。

你的方法很好。您也可以使用单个动画块来编写它,其中 for 循环位于块内,但我认为这种方法并不比您的方法好。无论如何,系统都会为每个正在动画的对象创建一个单独的核心动画。