UIViewController:调整xib的限制

问题描述:

在我的项目中,我定义了一个xib和一个包含xib的ViewController。UIViewController:调整xib的限制

class FeedDetailViewController: UIViewController, FeedDetailDelegate { 

    var feedDetail: FeedDetail! 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    feedDetail = (NSBundle.mainBundle().loadNibNamed("FeedDetail", owner: self, options: nil)[0] as? UIView)! as! FeedDetail 
    feedDetail.delegate = self; 
    self.view.addSubview(feedDetail) 
    self.adjustContraints() 
    } 

func adjustContraints() { 

    feedDetail.sizeThatFits(self.view.frame.size) 

    var constraint = NSLayoutConstraint(item: feedDetail, 
     attribute: NSLayoutAttribute.Bottom, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0) 
    view.addConstraint(constraint) 

    constraint = NSLayoutConstraint(item: feedDetail, 
     attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Top, multiplier: 1, constant: 0) 
    view.addConstraint(constraint) 

    constraint = NSLayoutConstraint(item: feedDetail, 
     attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0) 
    view.addConstraint(constraint) 

    constraint = NSLayoutConstraint(item: feedDetail, 
     attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0) 
    view.addConstraint(constraint) 

    self.view.layoutIfNeeded() 

} 

我想要的只是xib在“全屏”,但xib边框并没有“贴”到控制器的主视图。

enter image description here

边境传奇:

  • 红:self.view
  • 黄:feedDetail
  • 人:内feedDetail元素(仅测试)

试图调用此方法在添加约束之前。

feedDetail.setTranslatesAutoresizingMaskIntoConstraints(false)