iOS:使对象数组在屏幕上移动

时间:2015-08-10 18:38:34

标签: ios objective-c animation

我正在尝试制作多个UILabel(使用for循环并将它们插入到数组中)在屏幕上水平移动。我有标签,我有阵列,但我无法弄清楚如何使用动画来让他们移动。我尝试使用[self.array setValue @0 forKey:@"XPOSITION"];,但我不知道如何写x位置。有没有真正的方法来改变数组中的x位置?我是否必须使每个人都成为自己的个体并使用object.frame = CGRectMake(newx,y,w,h);这似乎有点单调乏味?提前谢谢!

2 个答案:

答案 0 :(得分:2)

根据Aderis关于设置中心的建议,您必须使用for循环来设置每个标签的中心。

for (UILabel *label in self.array) {
    CGPoint oldCenter = label.center;
    label.center = CGPoint(oldCenter.x + 20, oldCenter.y);
}

您要将20更改为您实际想要更改x坐标的任何值。

如果你想让它动画,你可以使用它:

[UIView animateWithDuration:0.2 animations:^{
    for (UILabel *label in self.array) {
        CGPoint oldCenter = label.center;
        label.center = CGPoint(oldCenter.x + 20, oldCenter.y);
    }
}];

用你想要动画持续的长度(以秒为单位)替换0.2。

答案 1 :(得分:1)

您应该尝试使用UIView的内置动画功能。您可以执行以下代码:

[UIView beginAnimations:nil context:nil];

for (UIView* view in myArray)
{
    [view setCenter:thisViewsTargetCenterPoint];
}

[UIView commitAnimations];

在for循环中,您应该进行所需的所有UI定位更改,一旦调用commitAnimations,UIKit将通过动画完成所有位置更改。