2017-02-27 7 views
0

単純なレイアウトで垂直スタックビューを使用しています。私がInterface Builderでビューを追加すると、スタックビューのビューに問題はありません。垂直スタックビューにビューをプログラムで追加すると、垂直スタックビューの制約が破られる

Just adding a "Blue" view to UIStackView

私はそれは制約を破って、コメントを追加ビューは、ウィンドウの上部に表示されUIStackViewにプログラムでビューを追加します。なぜ私はそれがスタックビューの制約を壊すのか混乱しています。

func buildCats(theJson:JSON){ 
    //self.verticalStack.subviews.forEach({ $0.removeFromSuperview() }) 
    print(theJson) 
    if let infos = self.swiftyJsonvar["info"].array{ 
     for info in infos{ 
      guard let v = UINib(nibName: "ticketOrderView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as? UIView else { return } 
      v.translatesAutoresizingMaskIntoConstraints = false 
      self.verticalStack.addArrangedSubview(v) 

     } 
    } 
} 

As you can see the added view show up WAY Outside of the vertical stack view..

+0

おそらく、この行でビューのautolayoutを無効にしていると思います。 'v.translatesAutoresizingMaskIntoConstraints = false'です。スタックビューには自動レイアウトがありますが、新しいビューは表示されません。 –

+0

私はIBを介してビューに自動レイアウトを設定していません。それは単にスタックビューによって処理されます。 私はその行を削除して、TRUEに設定して、毎回同じ動作をしました。 – BostonMacOSX

+0

テーブルビューを使用しない理由はありますか?あなたはそれ自身の制約を使ってテーブルセルを設計することができます –

答えて

0

彼らは本来のサイズを持っていないとして追加サブビューは、制約を必要としています。試してみてください:

v.heightAnchor.constraint(greaterThanOrEqualToConstant:30).isActive =真 v.widthAnchor.constraint(greaterThanOrEqualToConstant:200).isActive =真

うーん....私は疑っていますこれは今...私は問題がバックグラウンドスレッドでビューを追加することに関連している可能性があると思う。おそらく、メインスレッドでループを実行しますか?

編集2:ああ...私は今、賭けている問題は、あなたがたとえば、あなたの「ticketOrderView」

内部ビュー/サブビューでやっていることに関連して、以下を参照してくださいhttps://github.com/DonMag/ScratchPad

関連する問題