我有厦门国际银行文件/类问题一个奇怪的自动布局。 我已经创造了斯威夫特一个使用厦门国际银行文件的自定义通知视图(UIView子类)。
- 当设备处于纵向方向上的负载,该通知是好的。
- 当我旋转为横向,再次通知是好的(不过,该按钮的交互不知何故被禁用/无应答者)
- 当我回旋转为纵向,厦门国际银行的视图(即“自我”)扩大到一个随机的高度( 注意“黄”的背景下 ,由设置:self.backgroundColor = UIColor.yellowColor()
在我的代码什么也不设置初始添加到视图控制器之后的帧或限制。 我必须调整在厦门国际银行文件,我能想到的每一个自动布局约束,并继续有这个问题。
下面是一些截图:
尝试将高度约束添加到视图。 在限制名单的最后,你必须: - 垂直空间(我想这是一个垂直空间顶部 - 水平空间 - 水平空间 - 添加一个高度约束的视图,以便它永远不会重新调整它的高度
好的解决了这个问题。 所以,问题是,你不能有自动布局引用设置在IB从厦门国际银行外部的UIViewController(因为他们不知道对方的存在,直到您以编程方式添加的厦门国际银行作为一个子视图)。 所以,你必须以编程方式创建约束。
这是我如何做的:
// Manual constraints required since view is a xib file being added to an external view controller
self.setTranslatesAutoresizingMaskIntoConstraints(false)
var constraintHeight = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 0, constant: 44)
self.addConstraint(constraintHeight)
var constraintWidth = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: self.presentingViewController?.view, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 1)
self.presentingViewController?.view.addConstraint(constraintWidth)
var constraintTop = NSLayoutConstraint(item: self, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: underView, attribute: NSLayoutAttribute.Bottom, multiplier: 1, constant: 0)
self.presentingViewController?.view.addConstraint(constraintTop)
文章来源: Xcode - Weird issue with xib and auto layout (xib expands to random height)