你好。
使用Swift 4,我尝试将带有XIB的自定义UIView加载到UIViewController上。
但是,它似乎只能部分填满屏幕,我不确定为什么。
我做了以下事情:
_fileno()
viewDidLoad
视图控制器代码为空,但我包括了相关部分:
copy bundle resources
UIView也很基本:
// QuestionViewController
class QuestionViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let subview = QuestionView()
self.view.addSubview(subview)
}
}
我使用在stackoverflow上找到的协议从捆绑包加载xib文件。最初,即使加载捆绑包,我也遇到很多问题,但是幸运的是,我能够解决此问题。无论如何,我的XIB协议文件在这里:
class QuestionView: UIView, XibView {
override init(frame: CGRect) {
super.init(frame: frame)
setupXib()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupXib()
}
func setupXib() {
guard let v = loadFromXib() else {
return
}
addSubview(v)
}
}
-
问题:
为什么UIView不能填满整个屏幕或部分填满屏幕,我该如何解决?
谢谢
编辑:
情节提要中寻找的UIViewController只有一个视图,没有内容。
答案 0 :(得分:1)
我认为您应该在Viewcontroller中使用一个UIview(0,0,0,0四个约束),然后为其分配一个自定义类,该类是UIView的子类,然后加载Xib文件,它肯定会占据整个屏幕
尝试这个人:: ----
class QuestionViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let subview = QuestionView()
subview.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.width)
self.view.addSubview(subview)
}
}