3

我有一组 UIImageViews:

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

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

4

1 回答 1

1

我会这样做:

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

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

您的表达式 ( imagesArray[0].frame.origin.x) 应该为您提供x视图的坐标imagesArray[0],如果没有,了解它如何/为什么失败会很有帮助。

于 2012-11-26T07:30:23.833 回答