49102


swift4でUIviewを内包した配列においてframeのx,yについて昇順で並び替える方法はどうすればよいでしょうか

viewcontrollerにおいて

[code]

    var array = [UIView]()
    func viewDidLoad() {
        for i in 0...8 {
            for n in 0...4 {
                let view = UIView(frame:CGRect(x: 3 * n, y: 3* i, width: 10, height: 10)
                view.tag = (Int(i) + 1) * 10 + (1 * Int(n) + 1)        
                self.array.append(view)
                self.view.addSubview(view)
            }
        } 
    }
    
[/code]

というコードを書いた後に

[code]

    self.array[4].frame = self.allyArray[7].frame
    self.array[7].frame = self.allyArray[4].frame
    
[/code]

のようにUIviewが画面内で移動を繰り返すとします。

このような場合、array内のUIviewの並びがframeのyで昇順し、さらにxで昇順する場合どのようにすればよいでしょうか。

よろしくお願いいたします。


CC BY-SA 4.0
2018-10-09T08:45:13.530
49099
2018-10-09T09:09:29.947
2018-10-09T09:09:12.607
30215
30215
question
swift ios xcode iphone swift4
UIviewを内包した配列においてframeのx,yについて昇順で並び替える方法


以下のコードを適時実行すると行けると思います。  
お試しください。

[code]

        self.array.sort{
            (view1 : UIView, view2 : UIView) -> Bool in
            if(view1.frame.origin.y == view2.frame.origin.y)
            {
                return view1.frame.origin.x < view2.frame.origin.x
            }
    
            return view1.frame.origin.y < view2.frame.origin.y
        }
    
[/code]


CC BY-SA 4.0
2018-10-09T09:09:29.947
49102
2018-10-09T09:09:29.947
17014
49099
answer