Xcode通过X-Cord对UIImages进行排序

时间:2012-11-16 16:44:26

标签: xcode uiimageview sorting

我有一个UIImageViews数组:

NSMutableArray *imagesArray = [[NSMutableArray alloc] init];
[imagesArray addObject:smallBox];
[imagesArray addObject:medBox];
[imagesArray addObject:largeBox];
[imagesArray addObject:xlBox];

这些框正在屏幕上移动。我希望数组排序,以便屏幕左侧的任何一个框(x位置)位于数组的第一个位置等。我想如果我知道如何访问属性,我将能够弄明白在阵列中的图像。我尝试使用imagesArray [0] .frame.origin.x等代码;但这不起作用。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我会这样做:

NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"frame.origin.x" ascending:YES];
[imagesArray sortUsingDescriptors:@[desc]];

假设数组中的所有对象都是视图 - 请确保smallBoxmedBox等都是UIImageView而不是UIImage的所有实例。另外,请注意,为了使图像视图'x坐标按照您希望的方式排序,它们应该都是同一超视图的子视图。如果他们不是,你就不是在比较苹果和苹果。如果视图不是同一视图的所有子视图,则需要编写一个比较器,在比较之前首先将视图的frame转换为屏幕坐标。

您的表达式(imagesArray[0].frame.origin.x)应该在x为您提供imagesArray[0]视图的{{1}}坐标,如果不是,那么知道它失败的原因是什么/为什么会有所帮助