iOS Swift - 像Skype一样的底部菜单

标签 ios swift animation ios7 ios8

我想像 Skype 应用程序一样创建底部菜单。 Example of Skype bottom menu

它应该在底部有一些图标,它可以向上滑动以显示更多项目。

我创建的是具有高度限制的 UIView。当有滑动手势或点击点时,我会更改菜单 View 的约束:

topMenuViewHeightConstraint.constant = 200;
UIView.animateWithDuration(0.5) {
    self.view.layoutIfNeeded()
}

它正在运行并且看起来不错。但我不确定这是否是正确的解决方案。如果没有更好的东西。该动画是否以正确的方式完成?如果屏幕上有更多控件,效果会更好吗?如果我想要更快的动画开始然后缓慢结束怎么办?谢谢

最佳答案

这确实是动画约束变化的推荐方式。我建议您对约束的处理方式稍作改变。

与其手动为 View 分配高度,不如让自动布局为您生成高度,并使用固定到 superview.bottom 的约束来执行动画。

  1. 当用户点击您的 UIBarButtonItem 时,创建 View 并将其添加到 super View ,顶部约束为 0 到 super View 的底部。现在 View 位于屏幕“下方”,用户还看不到。
  2. 在 View 上调用layoutIfNeeded() 触发自动布局
  3. 使用 CGRectGetHeight() 获取高度并使用它将顶部约束的常量设置为该值的负数(例如 -400)。
  4. 在动画 block 中再次调用 layoutIfNeeded(), View 将从屏幕底部向上滑动。

对于手势,您可以使用相同的方法并简单地使用 UIGestureRecognizer 方法 translationInView() 相应地调整顶部约束的常量。

另一种不需要在代码中引用高度的替代方法是删除顶部约束并向 superview.bottom 添加底部约束。

另请参阅我对类似问题的其他回答: https://stackoverflow.com/a/28484328/1451954

关于iOS Swift - 像Skype一样的底部菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482795/

相关文章:

wpf - 使用 MVVM 模式的动画

ios - 无法在iOS版Google Maps的GMSMapView上移动相机

ios - 防止自动登录时显示登录屏幕

ios - 在启用分页的情况下检测 scrollView 中的 y 偏移何时发生变化

ios - 在 Swift 3 中连接转换动画?怎么了?

swift - NSInternalInconsistencyException 在 Xcode 中测量性能时,性能指标必须提供 10 个测量值

iphone - 模态 UIImagePickerController 被解除时的 UIView 通知?

ios - 表格 View 末尾的巨大空白区域

iphone - 在 UITableView 中对大量行/节进行动画处理性能不佳

C 动画轮盘