【问题标题】:Adding view from xib in front of other views在其他视图前面添加来自 xib 的视图
【发布时间】: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 加载了自定义视图而没有任何问题。那么如何您告诉视图是否落后于其他视图“调试视图层次结构”??

标签: ios swift


【解决方案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】:

    如果您希望视图位于顶部,请将其添加到窗口中。

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 2012-04-05
      • 2016-02-01
      • 2015-06-25
      • 2013-04-07
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多