【问题标题】:How to create a slide animation inside a view controller?如何在视图控制器中创建幻灯片动画?
【发布时间】:2017-12-28 20:24:49
【问题描述】:

我想为视图设置动画以从左侧滑入和滑出。
到目前为止我做了什么:

当用户点击左上角的图标时,会触发一个动作(显示/隐藏菜单视图)。

“菜单视图”包括深色蒙版视图、半透明白色视图和所有三个视图(标签+图像)。
现在这个菜单视图将滑入和滑出。

我尝试在菜单视图中添加一个约束:

func viewDidLoad() {
    super.viewDidLoad()
    menuView.translatesAutoresizingMaskIntoConstraints = false
    menuViewLeftConstraint = NSLayoutConstraint(item: menuView, attribute: .left, relatedBy: .equal, toItem: view, attribute: .left, multiplier: 1, constant: -1000)
    menuViewLeftConstraint.isActive = true
}

我在用户每次点击时切换常量(-1000 或 0)。

但动画看起来不像我想象的那样。

【问题讨论】:

  • 您想要动画约束的变化,我认为您已经在尝试。作为“滑动”左锚的替代方法,您可以增加宽度。我的滑出是这样做的:(OUT)取消隐藏所有控件并将宽度常数增加到所需的宽度。 (IN) 隐藏所有控件并将宽度设置为 0。
  • @dfd 嗯,听起来不错,你能举个例子吗?顺便说一句,你知道为什么动画左约束对我不起作用吗?
  • 没有看到我可以说的其他限制。 @J.Doe 的回答可能是最好的方法,但前提是您知道要移动 centerX 多少。
  • 好吧,我只是将 centerX 约束每次移动 1000:centerX.constant += 1000。
  • 这行得通,至少在 Apple 发布“桌子”iPad 之前!,12.9 英寸 iPad Pro 的纵向宽度为 1024,高度为 1366。(答案提供了一个“未来”的好方法证明”你的代码。)

标签: ios swift xcode


【解决方案1】:

为什么以编程方式使用固定常量?将您的 uiview(尾随)的右侧设置为等于您的 superciew(uiviewcontroller)的前导(左侧)。创建该约束的出口,并通过添加一个等于 uiview 的宽度和可能一些偏移量的常量来对其进行动画处理。

或者,您可以使您的子视图等于您的父视图的宽度 - someoffset,相等的高度 -someoffset,centerX 和 centerY 到 superview 并为 centerX 约束设置动画。

【讨论】:

  • 谢谢!如何为 centerX 约束设置动画? self.menuView.centerXAnchor.constraint(equalTo: view.centerXAnchor, constant: -1000) 似乎没有按预期工作。
  • 我知道了,谢谢你的帮助。此处还描述了移动 centerX:stackoverflow.com/questions/32802210/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多