2012-12-14 3 views

答えて

15

NSMutableArrayは、いくつかの並べ替えメソッドを持って行うことができます

yourView.subviews 

を使用してサブビューの配列を取得することができます。それらの1つを選択し、並べ替えセレクタ、ブロックまたは関数を実装し、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]; 
+1

作品!感謝の男:)これを知らなかった、そしてそれはとても良いです! – xGoPox

+0

ありがとう!これは本当に大きな助けになります。 –

+0

とても役に立ちました!ありがとうございました –

-2

あなたは、あなたがそれぞれを反復処理し、各frame.origin.yをチェックして、あなたのコーディング

3

これはframe.origin.yはありませんが、あなたはまた、SortDescriptorを使用して、キーとしてlayer.position.yを見て、これを行うことができます。

[array sortedArrayUsingDescriptors:@[[[NSSortDescriptor alloc] initWithKey:@"layer.position.y" ascending:YES]]]; 
+0

答えよりはるかに良い解決策..構造体である 'frame'をソートすることができます – RyanG

1

これはスウィフトでこれを行うだろうかです:

listOfViews.sortInPlace { CGRectGetMinY($0.frame) < CGRectGetMinY($1.frame) } 

ザッツシャルムのようなすべてのスウィフトに:-)すべての私の愛:-)

関連する問題