2016-12-14 8 views
0

水平UIStackViewにUIViewControllerビューを動的に挿入しようとしています。 UIStackViewはUIScrollViewに組み込まれています。StackView挿入オフセットの問題

ラベルやボタンをスタックビューに追加しようとすると、以下のコードで同じアプローチでコメントを付けるとうまくいきます。しかし、ビューコントローラのビューを挿入しようとすると、コンポーネントを正しくレイアウトできません。

だからここに私のレイアウトです: enter image description here

ここに私のViewControllerコードだ: enter image description here

建物にも実行中に警告がありません:

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var stackview: UIStackView! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 

    @IBAction func addComponents(_ sender: Any) { 
    let componentsView = UIStoryboard.init(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ComponentsView") 
    //componentsView.preferredContentSize = CGSize(width: 375, height: 200) 
    //let button = UIButton(type: .system) 
    //button.setTitle("Test", for: .normal) 
    stackview.insertArrangedSubview(componentsView.view, at: 1) 
    UIView.animate(withDuration: 0.5) { 
     self.stackview.layoutIfNeeded() 
    } 
    } 
} 

ここでの結果です。

何か不足していますか?

答えて

0

スタックビューに関する私の見解を追加すると、このシナリオでは動作しないかどうかわかりません。

私たちがストーリーボードからのスタックビューを使用していて、それに高さを強制フィールドとして与える必要がある場合は、ビューを追加している場合。 (Fill - Fillプロパティ)。

サブビューの高さを最初に追加してから追加してください。期待通りに動作するよりも