我想在Skype应用程序中创建底部菜单。
它应该在底部有一些图标,它可以向上滑动以显示更多项目。
我创建的是具有高度约束的UIView。当有滑动手势或点击点时,我改变了菜单视图的约束:
topMenuViewHeightConstraint.constant = 200;
UIView.animateWithDuration(0.5) {
self.view.layoutIfNeeded()
}
它工作正常,看起来不错。但我不确定这是否是正确的解决方案。如果没有更好的东西。这个动画是否正确完成?如果屏幕上有更多控件,它会运行良好吗?如果我想从开始然后缓慢结束更快的动画怎么办?感谢
答案 0 :(得分:2)
这确实是为约束更改设置动画的推荐方法。我会建议你如何处理约束。
您应该让自动布局为您生成高度,而不是手动为视图指定高度,并使用固定到superview.bottom的约束来执行动画。
UIBarButtonItem
创建视图并将其添加到超级视图时,顶部约束为0到超级视图的底部。现在,视图定位在"下面"屏幕,但用户尚不可见。 layoutIfNeeded()
以触发自动布局layoutIfNeeded()
,视图将从屏幕底部向上滑动。对于手势,您可以使用相同的方法,并使用UIGestureRecognizer
方法translationInView()
简单地相应地调整顶部约束的常量。
不需要在代码中引用高度的替代方法可以是删除顶部约束并向superview.bottom添加底部约束。
另外 - 请参阅我对类似问题的其他答案: https://stackoverflow.com/a/28484328/1451954