2016-12-14 2 views
0

UIViewController 뷰를 가로 UIStackView에 동적으로 삽입하려고합니다. UIStackView는 UIScrollView에 내장되어 있습니다.StackView 삽입 오프셋 문제

아래 코드에서 주석 처리 된 동일한 접근 방식으로 스택보기에 레이블이나 버튼을 추가하려고하면 모든 것이 잘 작동합니다. 그러나보기 컨트롤러의 뷰를 삽입하려고하면 레이아웃 구성 요소가 제대로 표시되지 않습니다. 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() 
    } 
    } 
} 

여기 결과입니다 : enter image description here

가 여기 내의 ViewController 코드입니다 :

그래서 여기 내 레이아웃입니다.

이 나는 ​​뭔가를 놓치고 있습니까?

답변

0

스택보기와 관련하여 내 관찰을 추가하면이 시나리오에서 작동하는지 여부를 알 수 없습니다.

우리가 스토리 보드에서 스택보기를 사용하고 높이 필드에 필수 필드보다 약간의보기를 추가하는 경우. (Fill - Fill 속성).

추가하기 전에 먼저 하위보기의 높이를 지정하십시오. 예상대로 작동합니다.