UIPickerView 模态,附加了已经可见的工具栏

Posted

技术标签:

【中文标题】UIPickerView 模态,附加了已经可见的工具栏【英文标题】:UIPickerView modal with already visible toolbar attached 【发布时间】:2015-10-17 18:26:03 【问题描述】:

(见草图)

如何使用已经可见的工具栏实现此行为?此外,我在打开 UIPicker 模式时发现的少量信息都基于使用 UITextField,这不是我的目标。

我正在寻找的是工具栏上的一个按钮,用于打开带有工具栏的选择器模式。草图上的 Button1 只是选择用户最有可能选择的值(类似于“转到今天的日期”),完成后应该隐藏模式并将工具栏恢复到附加到底部的原始状态屏幕。

理想情况下,我希望这个带有选择器功能的工具栏可以在多个视图中使用。

【问题讨论】:

【参考方案1】:

您可以向情节提要添加约束,将它们作为出口连接到您的代码,然后在需要时禁用和启用适当的约束。

一个约束设置是:

添加将选取器顶部固定到视图底部的约束 添加另一个约束,将选取器底部固定到视图底部

-> 如果启用 1 并禁用 2,则选择器被隐藏 -> 如果启用 2 并禁用 1,则选择器可见

约束的变化是动画的,这将导致 UI 的平滑变化。

【讨论】:

好主意,但是我如何使用它而不必在我的 Storyboard 中为多个视图定义相同的 UI 元素?就像我提到的那样,理想情况下,我需要在多个(目前 2 个)视图中使用此功能。 @Marv 嗯,你可以做的是将整个工具栏或只是选择器提取到不同的视图+控制器中,然后通过委托与父级进行通信,但它本身负责动画和约束。然后,您可以通过 container view (UIContainerView) 在任何需要的地方包含该视图+控制器。 非常感谢。效果很好。是否有动画长度指南,或者您是否偶然知道点击文本字段时默认选择器模式幻灯片的动画持续时间? @Marv 不幸的是,我不知道默认的动画持续时间是多少——我只会玩弄这些值直到它们看起来合适,甚至可能使用不同的计时函数。

以上是关于UIPickerView 模态,附加了已经可见的工具栏的主要内容,如果未能解决你的问题,请参考以下文章

键盘不会随着 resignFirstResponder 消失

转换到带键盘可见的模态视图控制器

我应该在关闭视图之前关闭键盘吗?

UIPickerView 直到发生触摸才出现

iOS 13 UIViewController 模态演示阴影

模态打开时使抽屉可见。反应原生