我想根據他們的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
謝謝!這真的很有幫助。 –
非常有幫助!非常感謝 –