从屏幕右侧向左滑动 UIView
Posted
技术标签:
【中文标题】从屏幕右侧向左滑动 UIView【英文标题】:Slide in the UIView from Right of screen to left 【发布时间】:2019-03-21 14:28:48 【问题描述】:我正在开发应用程序,其中我正在展示 UITableView。在 UITableView 之上有一个按钮过滤器。现在单击该按钮,我想为 UIVIEW 设置动画以从屏幕右侧到屏幕左侧进行动画处理。它必须进行动画处理,直到达到屏幕宽度的 70%。
现在这样做会使以前的视图变暗一点,我想让外观和感觉像 android 中的导航抽屉一样。但这只会显示该 UIView 中的过滤器设置。
我搜索了一下,那里有太多的库来执行我想要的任务,但我想自己编写代码并为 UIView 或 Nib 设计制作动画来执行此操作。
有没有在不使用任何库或任何东西的情况下执行我想要的操作?请让我知道我在等待。提前致谢。
【问题讨论】:
初始化宽度为零的 UIView,然后使用 UIView.animate 相应地设置宽度。 里面有一些view,是不是也要设置宽度? 【参考方案1】:在这种情况下,我喜欢对视图进行动画处理的方式是对视图使用变换——它可以保留视图的布局和外观,并且通常比更改视图的宽度看起来更好。
UIView.animate(withDuration: 0.35, animations:
let moveLeft = CGAffineTransform(translationX: -(view.bounds.width * 0.7), y: 0.0)
viewController.view.transform = moveLeft
)
要将视图返回到其正常位置,只需再次设置变换,使用 0.0 作为 translationX
值。
UIView.animate(withDuration: 0.35, animations:
let zero = CGAffineTransform(translationX: 0.0, y: 0.0)
viewController.view.transform = zero
)
【讨论】:
【参考方案2】:如果您使用自动布局,则可以通过使用视图的约束轻松执行动画。您可以将视图的尾随锚约束到视图的前导锚(视图将离开屏幕),在代码中添加对约束的引用(通过添加 IBOutlet)并在您想要显示或隐藏它时使用它的常量(例如,您可以将常量设置为等于要显示的视图的宽度)。
现在这样做会使以前的视图变暗一点,我想让外观和感觉像 android 中的导航抽屉一样。但这只会显示该 UIView 中的过滤器设置。
为了达到这个效果,你可以在 table view 的顶部添加一个黑色的 view 并调整它的 alpha 值。 Slide In UIView隐藏的时候可以隐藏,显示的时候可以显示。
【讨论】:
以上是关于从屏幕右侧向左滑动 UIView的主要内容,如果未能解决你的问题,请参考以下文章
Android 中的两部分过渡动画:将一个 textview 向左滑出,并从右侧引入另一个