2017-11-21 10 views
0

1つのViewControllerに複数のUIViewレイヤーがあります。 Several UIViews layersSwift - プログラムによるUIViewの注文

UIViewの順序をプログラムで決定するにはどうすればよいですか?

+0

を持っていますか? IOW、あなたが質問に答えた関数を持っていれば、どのデータ型が返されますか? –

+0

ViewControllerでUIViewの順序を操作する必要があります.ZインデックスやUIViewのスタック順序を変更する必要があります。 – Rurom

答えて

1

bringSubviewToFront(_:) 

sendSubviewToBack(_:) 

removeFromSuperview() 

insertSubview(_:atIndex:) 

insertSubview(_:aboveSubview:) 

insertSubview(_:belowSubview:) 

exchangeSubviewAtIndex(_:withSubviewAtIndex:) 

ビューは、view.subviews配列の最背面から最前面に並べられています。


たとえば、3つのサブビューが空のビューに追加されています。次のコード

for view in view.subviews { 
    print(view.debugDescription) 
} 

とサブビューを印刷

view.addSubview(UILabel()) 
view.addSubview(UIButton()) 
view.addSubview(UITextField()) 

は、ビューが並べ替えられる出力

<UILabel: 0x7feef00042e0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60400008c210>> 
<UIButton: 0x7feef00045c0; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x604000222300>> 
<UITextField: 0x7feeef02c800; frame = (0 0; 0 0); text = ''; opaque = NO; gestureRecognizers = <NSArray: 0x60800005b090>; layer = <CALayer: 0x604000222280>> 

を有し、view.subviewsの位置が

を変更します今3210

は、ビューを印刷し、あなたは「順序」としてたくないデータのどのような種類の出力

<UILabel: 0x7feef00042e0; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x60400008c210>> 
<UITextField: 0x7feeef02c800; frame = (0 0; 0 0); text = ''; opaque = NO; gestureRecognizers = <NSArray: 0x60800005b090>; layer = <CALayer: 0x604000222280>> 
<UIButton: 0x7feef00045c0; frame = (0 0; 0 0); opaque = NO; layer = <CALayer: 0x604000222300>> 
1

私はサブビューのための操作のためにリストされているいくつかの方法ですUIViewのドキュメントでは、...

を解決策を見つけた:スウィフト4.0

view.sendSubview(toBack:yourUIView) 

view.bringSubview(toFront:yourUIView) 
+0

この回答とあなたの質問は理にかなっていません。あなたの質問は「注文をどうやって見つけるか」ですが、あなたの答えは「注文をどのように変更するのですか」です。 – brandonscript

+0

私の質問は:どのようにプログラムでUIViewの順序を決定できますか?この場合の「決定」とは、プログラムでUIView1 - 1st、UIView2 -2ndなどをどうやって作るのかを意味します。 – Rurom

+0

これはストーリーボードやprogrmaticcalyで行いたい – ahmed

関連する問題