我想根据他们的frame.origin.y排序UIViews的一个NSMutableArray,我希望最低的观点与Y是第一等。它可以是2个UIViews具有相同的起源的情况。有没有现有的方法呢?根据他们的frame排序UIView的一个NSMutableArray.origin.y
6
A
回答
15
NSMutableArray
有几个排序方式获取子视图的阵列。选择其中一个,实现排序选择器,块或功能并比较y
值。下面是使用块的例子:
NSComparator comparatorBlock = ^(UIView *obj1, UIView *obj2) {
if (obj1.frame.origin.y > obj2.frame.origin.y) {
return (NSComparisonResult)NSOrderedDescending;
}
if (obj1.frame.origin.y < obj2.frame.origin.y) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
};
[array sortUsingComparator:comparatorBlock];
-2
您可以使用
yourView.subviews
那么你可以通过每个迭代并检查每个frame.origin.y,做你的编码
3
虽然这不是frame.origin.y,您还可以通过使用SortDescriptor来看,在layer.position.y为重点做到这一点。
[array sortedArrayUsingDescriptors:@[[[NSSortDescriptor alloc] initWithKey:@"layer.position.y" ascending:YES]]];
+0
比答案更好的解决方案..你可以在'frame'上排序,因为它是一个struct – RyanG
1
你这是怎么会在斯威夫特做到这一点:
listOfViews.sortInPlace { CGRectGetMinY($0.frame) < CGRectGetMinY($1.frame) }
这就是所有:-)我所有的爱给斯威夫特:-)
相关问题
- 1. 一个的UIView来统治他们,一个UIView的约束他们
- 2. 排序根据其他
- 3. 根据他们的i18n翻译排序列表
- 4. 根据他们的教师编号排序学生列表
- 5. 根据另一个数组的排序索引排序数组
- 6. 根据其他数组排序数组
- 7. 根据他们的排名比较字符串列表 - JavaScript/Jquery?
- 8. 排序RDD根据一个Array()内容
- 9. 文件进行排序,然后对他们中的每一个
- 10. 排序他们的第一个指数榆树
- 11. Scala的排序一个列表,根据在另一个
- 12. 根据位置排序UIView子视图z顺序
- 13. 排序根据
- 14. 根据它们的值排序复选框(按特定顺序)
- 15. 根据第一列的数字排序
- 16. 排序矩阵中的一列,然后根据排序列中的其他列排序R
- 17. 根据他们的ID分组项目
- 18. Python如何根据另一个列表根据它们的属性对对象列表进行排序
- 19. 排序图像通过他们的ID
- 20. 的tablesorter排序与他们逗号
- 21. Sqlite:选择,根据一个属性desc分组。并根据另一个排序
- 22. 根据他们的日期排列的行,取决于他们的日期并以'x'表示
- 23. 排序RDD根据在一个列中的不同的值
- 24. 排序根据PHP
- 25. 大熊猫:根据他们的无序多列得到唯一的行值
- 26. 根据它们的出现次序排列项目desc在php
- 27. FREETEXT搜索 - 根据它们的匹配程度排序结果
- 28. 排序ķ排序列出了他们的最大元素
- 29. 排序两个列表通过他们的第一个元素,压缩他们在斯卡拉
- 30. 根据另一个阵列的排序对阵列进行排序
像一个风情万种!感谢男人:)不知道这一点,它是如此的美好! – xGoPox
谢谢!这真的很有帮助。 –
非常有帮助!非常感谢 –