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

标签 ios objective-c performance uikit uiviewanimation

我有不同的 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];
}

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

最佳答案

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

关于ios - 关于如何同时为不同的 UIView 设置动画的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28476647/

相关文章:

android - 卸载应用程序时在 Azure 通知中心进行检测

iphone - 如何将 titleForHeaderInSection 的文本设置为 AlignmentCenter

objective-c - 来自 NSTextView 插入点的 NSpoint

ios - 发现启动 URL (iOS)

performance - 使用 Clojure 宏内联函数

java - 低效的 java/未知长度的数组

ios - 我如何在 iOS 中读取 ptr_refs 给出的引用?

ios - 从 NSNumber 获取 CGFloat 的最常见和正确的做法是什么?

objective-c - UIView.center = UIImageView.center 但 ImageView 似乎不在横向中心

c# - 如何在不使用第 3 方库的情况下登录 C#?