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