如何在情节提要中正确创建覆盖视图?
Posted
技术标签:
【中文标题】如何在情节提要中正确创建覆盖视图?【英文标题】:How to properly create an overlay view in storyboard? 【发布时间】:2017-12-17 11:32:44 【问题描述】:我的目标是在单击按钮后在按钮下方创建一个弹出视图,这是概念:
我准备故事板的方式是使用两个不同的 UIViewController。主要的包含两个按钮,一旦单击,我会模态地将第二个 UIViewController 推到当前上下文中。
我的问题是:为了将“点击”图像移动到按钮正下方,创建约束的最佳或正确方法是什么?
【问题讨论】:
【参考方案1】:我这样做的方法是在您的第一个故事板 vc 中添加一个子控制器。然后在storyboard中调整container view的frame,希望比通过程序调整frame更容易。
然后确保在 Xcode 为您创建的 VC 之上更改类。
【讨论】:
【参考方案2】:当按钮被点击时,获取它的底部位置(它是框架中的 y + 高度)并将其发送到弹出窗口,然后将它们设置为弹出窗口中 imageView 的 top 约束viewDidLayoutSubview
【讨论】:
【参考方案3】:您可以使用按钮和view
的位置和尺寸来计算叠加层的位置。例如,叠加层的 y 可以是按钮的 frame.maxY + constant
。
let x = ...
let y = ...
let width = ...
let height = ...
let overlay = UIView(frame: CGRect(x: x, y: y, width: width, height: height))
view.addSubView(overlay)
半透明黑色视图可以添加为UIView
,与VC 的view
具有相同的框架,并限制为始终与VC 的view
的框架相同。先添加这个视图,然后再添加overlay
。
【讨论】:
以上是关于如何在情节提要中正确创建覆盖视图?的主要内容,如果未能解决你的问题,请参考以下文章
如何正确处理情节提要中的类似视图,这些视图具有类似的控制器而无需重复代码?
在使用情节提要时不确定如何正确继承 UIApplication