Swift - 添加一个不与当前 Storyboard 的视图重叠的 UIView

Posted

技术标签:

【中文标题】Swift - 添加一个不与当前 Storyboard 的视图重叠的 UIView【英文标题】:Swift - Add an UIView that does not overlap current Storyboard's Views 【发布时间】:2017-07-08 00:07:59 【问题描述】:

我正在尝试在我的绘图应用上完成以下任务:

我在 .xib 文件中设计了一个自定义 UIView,在 UIView 中只包含一个“关闭”按钮。默认情况下,我不希望我的应用加载此 UIView;我只想在我按下应用程序主视图上的按钮时加载它。视图弹出后,我希望仍然能够访问我的应用程序上的其他视图,而弹出窗口仍然打开。特别是,我仍然想在我设置为“画布”的视图上画线。目前,我为这个自定义弹出添加了三个文件:一个从 UIView 继承的名为 PopUpView.swift 的类文件,另一个从 UIViewController 继承的名为 PopUpViewController.swift 的类文件,以及 .xib 文件。

在主 ViewController 中,我有以下代码

var popUp = popUpClass()    
@IBAction func showPopUp (sender: UIButton)
    self.view.addSubview(popUp)
    

但是,当我单击它时,视图不显示。我对代码流应该是什么感到有些困惑,想知道是否有人可以提供帮助?

谢谢!

【问题讨论】:

【参考方案1】:

当我开始构建一个包含绘图的应用程序时遇到的一个问题是 canvasView 在使用覆盖函数 draw(_ rect: CGRect) 时会在子图层中绘制线条,所以如果您要向画布添加任何视图,你将不再能够看到你画的东西。因此,如果您想添加任何子视图,请将其添加到画布视图下方的视图中,并始终确保画布视图位于顶部且背景颜色清晰。

【讨论】:

是的,这是个好建议!【参考方案2】:

所以,我想我可能已经找到了解决方案。我删除了我的 .xib 文件。我使用了一个容器视图,并在它的视图控制器上设计了我的弹出窗口。

【讨论】:

以上是关于Swift - 添加一个不与当前 Storyboard 的视图重叠的 UIView的主要内容,如果未能解决你的问题,请参考以下文章

如何添加不与更新内容功能冲突的自动图像幻灯片放映

Alamofire.request 不与自定义对象映射

如何添加到当前存储在用户默认值 Swift 4 中的数字

通过Swift中的触摸检测应用程序何时处于活动状态或非活动状态[重复]

GitLab 不与 Gitolite 交互

GCVirtualController 不与 SKScene 一起显示