【发布时间】:2021-01-11 17:28:10
【问题描述】:
概述
我创建了一个自定义视图类和一个关联的笔尖。当我尝试在另一个视图控制器中加载它时,它会加载它但约束被删除。
我发现了什么
在将其标记为重复之前...我在 StackOverflow 上阅读了很多关于人们遇到相同问题但快速解决问题的问题要么没有回答要么不工作。我什么都试过了。
我在做什么
我有一个带有关联 nib 的视图控制器(它恰好是一个 keyboardviewcntroller,但在常规控制器上我仍然有问题)和一个带有关联 nib 的自定义 uiView。
- 键盘视图控制器:
我与我的键盘视图控制器关联了一个 zip 文件。他的文件所有者是 KeyboardViewController。
在我的 KeyboardViewController 中,我拥有通过创建键盘目标获得的基本代码,然后我在 viewDidLoad@IBOutlet weak var vieww: Custom!
之前添加了自定义视图出口 在我的 viewDidLoad 中,我加载了我的笔尖
let nib = UINib(nibName: "nibbb", bundle: nil)
let objects = nib.instantiate(withOwner: self, options: nil)
view = objects[0] as? UIView
- 自定义视图
我的自定义视图也有一个相关的笔尖。它的文件所有者是自定义(我的新课程)。在笔尖中,我放置了一个按钮和一个标签,如下图所示,并添加了一些约束。
在 Custom 类中,我放置了以下代码,其中包括 outlet 和类的 init。
@IBOutlet weak var label: UILabel!
@IBOutlet weak var button: UIButton!
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit(){
Bundle.main.loadNibNamed("Custom", owner: self, options: nil)
addSubview(label)
label.frame = self.bounds
label.autoresizingMask = [.flexibleHeight, .flexibleWidth]
addSubview(button)
button.frame = self.bounds
button.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
}
当然,这不是我想要的。
问题
如何从另一个视图控制器加载自定义 UIView nib 而不会弄乱我的约束?
【问题讨论】:
标签: ios swift uiview constraints nib