我有一个UIImageViews数组:

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

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

最佳答案

我会这样:

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]坐标,如果不是,那么知道如何/为什么会失败将很有帮助。

08-05 16:00