UIView的使用将自动布局约束

问题描述:

我加载我的NIB文件,以我的观点后,不符合父约束容器。这仅在向uiview添加自动布局后才会发生。我已经检查,最初的框架尺寸为600x600。UIView的使用将自动布局约束

即使尝试通过调用layoutSubviews()来重置NIB大小,并将新的框架约束放在它中仍然拒绝调整大小。例如:

override func layoutSubviews() { 
    // self.frame.size.width = 300 
    //self.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: 200, height: self.frame.height) 
} 

看看这篇文章here。看看第三个技巧,它展示了如何创建一个从笔尖加载的视图。将代码复制到下面(声明它是写在斯威夫特2):

@IBDesignable 
class ProfileView: UIView { 
    @IBOutlet var imgView: UIImageView! 
    @IBOutlet var labelOne: UILabel! 
    @IBOutlet var labelTwo: UILabel! 
    override init(frame: CGRect) { 
     super.init(frame: frame) 
     setUp() 
    } 
    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     setUp() 
    } 
    func setUp() { 
     let bundle = NSBundle(forClass: self.dynamicType) 
     let nib = UINib(nibName: “Profile”, bundle: bundle) 
     let viewFromNib = nib.instantiateWithOwner(self, options: nil)[0] as! UIView 
     addSubview(viewFromNib) 
     viewFromNib.translatesAutoresizingMaskIntoConstraints = false 
     self.addConstraints(
     NSLayoutConstraint.constraintsWithVisualFormat(
      “H:|[v]|”, 
      options: NSLayoutFormatOptions(rawValue: 0), 
      metrics: nil, 
      views: [“v”:viewFromNib] 
     ) 
    ) 
     self.addConstraints(
     NSLayoutConstraint.constraintsWithVisualFormat(
      “V:|[v]|”, 
      options: NSLayoutFormatOptions(rawValue: 0), 
      metrics: nil, views: [“v”:viewFromNib] 
     ) 
    ) 
    } 
} 

一旦你拥有了它的代码和笔尖设置正确,你应该能够很容易地对其进行初始化。无论是在界面生成器或代码:

//视图控制器

override viewDidLoad() { 
    super.viewDidLoad() 
    self.addSubview(ProfileView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))) 
} 
+0

的岗位在哪里? – Allreadyhome

+0

对不起,我添加了链接。 – DerrickHo328