iOS Swift - 像Skype一样的底部菜单
Posted
技术标签:
【中文标题】iOS Swift - 像Skype一样的底部菜单【英文标题】:iOS Swift - bottom menu like skype 【发布时间】:2015-02-12 16:33:39 【问题描述】:我想在 Skype 应用程序中创建底部菜单。
它应该在底部带有一些图标,并且可以向上滑动以显示更多项目。
我创建的是带有高度限制的 UIView。当有滑动手势或点按时,我会更改菜单视图的约束:
topMenuViewHeightConstraint.constant = 200;
UIView.animateWithDuration(0.5)
self.view.layoutIfNeeded()
它正在工作并且看起来不错。但我不确定这是否是正确的解决方案。如果没有更好的东西。该动画是否以正确的方式完成?如果屏幕上有更多控件会更好吗?如果我想要更快的动画从开始然后缓慢结束怎么办?谢谢
【问题讨论】:
【参考方案1】:这确实是动画约束更改的推荐方式。我建议您对处理约束的方式稍作改变。
您应该让自动布局为您生成高度,而不是手动为视图分配高度,并使用固定到 superview.bottom 的约束来执行动画。
-
当用户点击您的
UIBarButtonItem
时,创建视图并将其添加到超级视图,顶部约束为 0 到超级视图的底部。现在视图位于屏幕“下方”,用户尚不可见。
在视图上调用layoutIfNeeded()
触发自动布局
使用 CGRectGetHeight() 获取高度,并使用它将顶部约束的常量设置为该值的负数(例如 -400)。
在动画块内再次调用layoutIfNeeded()
,视图将从屏幕底部向上滑动。
对于手势,您可以使用相同的方法并简单地使用UIGestureRecognizer
方法translationInView()
相应地调整顶部约束的常量。
另一种不需要在代码中引用高度的方法是删除顶部约束并将底部约束添加到 superview.bottom。
另外——请参阅我对类似问题的其他回答: https://***.com/a/28484328/1451954
【讨论】:
以上是关于iOS Swift - 像Skype一样的底部菜单的主要内容,如果未能解决你的问题,请参考以下文章
Delphi:如何创建像 Skype 一样的 Windows 自动启动应用程序?
在键盘上显示带有按钮的 UIView,例如在 Skype、Viber messengers(Swift、iOS)中