2017-03-31 4 views
1

を配置していない私は、プログラムのViewControllerにルートビューとサブビューを追加しようとしていますが、ビューが予想どおりにスクリーニングするための充填されていません。はプログラムコントローラを表示するには、ルートビューを追加正しく

override func loadView() { 
     self.view = UIView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) 
     self.view.backgroundColor = UIColor.blue 
    } 

    override func viewDidLoad() { 

     let alertView = Bundle.main.loadNibNamed("CHRApptTakenAlertView", owner: self, options: nil)![0] as! CHRApptTakenAlertView 

     self.view.translatesAutoresizingMaskIntoConstraints = false 
     alertView.translatesAutoresizingMaskIntoConstraints = false 

     self.view.addSubview(alertView) 
     self.view.addConstraint(NSLayoutConstraint(item: alertView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: self.view, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0)) 
     self.view.addConstraint(NSLayoutConstraint(item: alertView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: self.view, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 0)) 
     alertView.addConstraint(NSLayoutConstraint(item: alertView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.width, multiplier: 1, constant: 350)) 
     alertView.addConstraint(NSLayoutConstraint(item: alertView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.height, multiplier: 1, constant: 250)) 

     alertView.closeBtn.addTarget(self, action: #selector(self.closeBtnTouch), for: UIControlEvents.touchUpInside) 
    } 
+0

'self.view.translatesAutoresizingMaskIntoConstraints = false'を設定しないでください。 – Sulthan

+0

@Sethmr制約を追加する前に階層が存在しなければならないので、制約の後にサブビューを追加することはできません。しかし、2つのtranslate行を削除して、loadView()メソッドの最後にself.view.layoutIfNeeded()を追加すると作業が正常に終了しました。答えとして追加し、私は受け入れます。 – steventnorris

答えて

0

は、行を削除しますself.view.translatesAutoresizingMaskIntoConstraints = falseを呼び出し、制約を追加した後にself.view.layoutIfNeeded()を呼び出します。

+1

「制約を追加した後にサブビューを追加してみてください」と表示されている部分を削除して、ビュー階層が制約が追加されていないためにエラーが発生するので削除して受け入れます。 – steventnorris

+0

@steventnorris done – Sethmr

関連する問題