在其他视图前面添加来自 xib 的视图
Posted
技术标签:
【中文标题】在其他视图前面添加来自 xib 的视图【英文标题】:Adding view from xib in front of other views 【发布时间】:2016-06-20 11:03:32 【问题描述】:我正在尝试在其他视图前面添加来自 xib 的自定义视图。但是,由于某种原因,当屏幕上有UITableView
时,它从未被放置为前视图。这是我的代码:
noInternetView = NSBundle.mainBundle().loadNibNamed("NoInternetView", owner: self, options: nil)[0] as! NoInternetView
noInternetView.translatesAutoresizingMaskIntoConstraints = false
noInternetView.delegate = self
self.view.addSubview(noInternetView)
self.view.addConstraint(NSLayoutConstraint(item: noInternetView, attribute: .CenterX, relatedBy: .Equal, toItem: self.view, attribute: .CenterX, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: noInternetView, attribute: .CenterY, relatedBy: .Equal, toItem: self.view, attribute: .CenterY, multiplier: 1, constant: 0))
我把它放在我的viewDidLoad()
代码的底部。为什么会这样?
【问题讨论】:
您可以在 viewdidappear 中尝试一下,并让我知道它是否有效。我已经完成了您所做的,但我的视图在情节提要中,并且从 xib 加载了自定义视图而没有任何问题。那么如何您告诉视图是否落后于其他视图“调试视图层次结构”?? 【参考方案1】:noInternetView.hidden = true
你的视图被隐藏了,让它可见
noInternetView.hidden = false
【讨论】:
对不起,你是对的,但实际上这是我的代码中的一个错误。没有它,它仍然低于其他子视图。我已将其从问题中的代码中删除以避免混淆! 也可以试试 addChildViewController(noInternetView!) view.addSubview((noInternetView?.view)!) noInternetView 不是视图控制器,它只是 UIView 的子类【参考方案2】:self.view.bringSubviewToFront(noInternetView)
试试这个可能对你有帮助。
【讨论】:
你在 addsubview 之后还是之前添加了这一行?【参考方案3】:第一
检查 noInternetView 是否有宽度和高度限制
第二
在self.view.addConstraint
之后添加self.view.layoutIfNeeded()
这有助于调整您添加的自动布局
【讨论】:
【参考方案4】:如果您希望视图位于顶部,请将其添加到窗口中。
【讨论】:
以上是关于在其他视图前面添加来自 xib 的视图的主要内容,如果未能解决你的问题,请参考以下文章
Xcode:如何在 UIScrollView 中从 XIB 文件添加自定义视图
如何使用来自 xib 文件的任何子视图(在 xib 中创建)的多个副本