我有一个UIImageViews数组:
NSMutableArray *imagesArray = [[NSMutableArray alloc] init];
[imagesArray addObject:smallBox];
[imagesArray addObject:medBox];
[imagesArray addObject:largeBox];
[imagesArray addObject:xlBox];
这些框正在屏幕上移动。我希望数组排序,以便屏幕左侧的任何一个框(x位置)位于数组的第一个位置等。我想如果我知道如何访问属性,我将能够弄明白在阵列中的图像。我尝试使用imagesArray [0] .frame.origin.x等代码;但这不起作用。任何帮助将不胜感激。
答案 0 :(得分:1)
我会这样做:
NSSortDescriptor *desc = [NSSortDescriptor sortDescriptorWithKey:@"frame.origin.x" ascending:YES];
[imagesArray sortUsingDescriptors:@[desc]];
假设数组中的所有对象都是视图 - 请确保smallBox
,medBox
等都是UIImageView
而不是UIImage
的所有实例。另外,请注意,为了使图像视图'x
坐标按照您希望的方式排序,它们应该都是同一超视图的子视图。如果他们不是,你就不是在比较苹果和苹果。如果视图不是同一视图的所有子视图,则需要编写一个比较器,在比较之前首先将视图的frame
转换为屏幕坐标。
您的表达式(imagesArray[0].frame.origin.x
)应该在x
为您提供imagesArray[0]
视图的{{1}}坐标,如果不是,那么知道它失败的原因是什么/为什么会有所帮助