2016-09-13 8 views
0

質問として、UIViewクラス内でイメージビューを設定しようとしたとき、フレームの高さの半径Radiusを2で割った値が機能していなかったので、フレームの高さは0でした。フレームの高さのプリント0

このクラスのすべてのビューの高さまたは幅が印刷されます。0わかりません。

+0

self.view.addSubView(yourView) –

+0

@MatGrltを使用してビューを追加しましたか?それはUIViewだけが書き込んだクラスaddSubview(view) – Rialcom

+0

ここでインスタンス化しますかあなたのサブビューのフレーム? –

答えて

0

この問題が見つかりました。 UIビュークラスを呼び出すとき、私はこのビューの実際のフレームをパラメータで渡していませんでした。したがって、このクラス初期化子が実行されたとき、フレームは常に0になりました。

0

デフォルトでは、ビューのサイズはまったくありません。何らかの種類の制約やビューのフレームを設定する必要があります。

1.制約: viewDidLoad()に制約を設定する場合、ビューは瞬時にサイズを得ることはありません。サイズを読み取るには、viewDidLayoutSubviews()という別の関数で読み取る必要があります。この関数は、すべてのビューが配置された後に呼び出されます。

var newView:UIView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     newView = UIView() 

     newView!.translatesAutoresizingMaskIntoConstraints = false 
     self.view.addSubview(newView!) 

     newView!.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true 
     newView!.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true 
     newView!.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true 
     newView!.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true 
    } 


    override func viewDidLayoutSubviews() { 
     print(newView!.frame) 
    } 

2.フレーム::ここではビューは、親ビューのサイズを得ることができます例です直接ビュー枠を設定することにより、あなたは即座にその大きさを読み取ることができます。ビューのフレームが親ビューと同じ境界に設定されている例を次に示します。

var newView:UIView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     newView = UIView() 

     newView?.frame = view.bounds 

     newView!.translatesAutoresizingMaskIntoConstraints = false 
     self.view.addSubview(newView!) 

     print(newView!.frame) 
    } 
+0

に引き継がれたものに置き換えます。事は私がUIViewの中にいることです。私。 – Rialcom

+0

しかし、確かにUIViewControllerのいくつかの並べ替えがありますか?角の半径を設定する 'viewDidLayoutSubviews()'で呼び出される関数をUIViewに作成します。 – Christoph

+0

問題が見つかりました、uiviewクラスの初期化子でフレームをオーバーライドしていたので、私は議論の中でuiviewを呼び出すときにフレームを渡します。 – Rialcom

関連する問題