当前位置:  开发笔记 > 编程语言 > 正文

在Swift中,如何像自动滑动页面一样为UIView设置动画?

如何解决《在Swift中,如何像自动滑动页面一样为UIView设置动画?》经验,为你挑选了1个好方法。

我尝试创建一个UIView来表示一个页面,该页面的大小与设备屏幕相同。由于该应用程序支持方向,因此我正在使用自动布局来构造它。

在我尝试为页面添加动画以使其从右侧滑入之前,它一直可以正常工作。经过研究,这是我能想到的最好的方法:

myView = UIView()
myView.backgroundColor = UIColor.orangeColor()
parentView.addSubview(myView)

myView.translatesAutoresizingMaskIntoConstraints = false
myView.leftAnchor.constraintEqualToAnchor(parentView.rightAnchor).active = true
myView.widthAnchor.constraintEqualToAnchor(parentView.widthAnchor).active = true
myView.heightAnchor.constraintEqualToAnchor(parentView.heightAnchor).active = true

UIView.animateWithDuration(Double(1.0), animations: {
    self.myView.leftAnchor.constraintEqualToAnchor(self.parentView.leftAnchor).active = true
    self.myView.layoutIfNeeded()
})

使用上面的代码,页面myView从左上角滑入,这不是我所期望的,并且日志也显示Unable to simultaneously satisfy constraints

非常感谢您提供任何帮助我并纠正我以更好地了解AutoLayout和动画的建议。谢谢。



1> Joe Huang..:

在我最初的问题中,我以为我会覆盖一个现有规则(左锚点),但实际上我正在为左锚点创建一个新规则,因此产生了冲突和动画失败。

在@vacawama的帮助下,有关更改AutoLayout规则的另一个问题,它现在如下工作:

override func viewDidLoad() {
    super.viewDidLoad()

    let myView = UIView()
    myView.backgroundColor = UIColor.orangeColor()
    myView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(myView)

    myView.topAnchor.constraintEqualToAnchor(view.topAnchor).active = true
    myView.widthAnchor.constraintEqualToAnchor(view.widthAnchor).active = true
    myView.heightAnchor.constraintEqualToAnchor(view.heightAnchor).active = true

    var leftConstraint = myView.leftAnchor.constraintEqualToAnchor(view.rightAnchor)
    leftConstraint?.active = true

    myView.layoutIfNeeded()

    /* try to deactivate a rule and create a new rule, then animate it */
    leftConstraint?.active = false
    leftConstraint = myView.leftAnchor.constraintEqualToAnchor(view.leftAnchor)
    leftConstraint?.active = true

    UIView.animateWithDuration(1.0) { self.view.layoutIfNeeded() }
}

但是,如果我的最后一行改为电话layoutIfNeeded()myView,而不是,这不是动画(任何评论,欢迎)。我实际上想在子视图而不是父视图上调用它,因为我不希望所有子视图都具有动画(在完整的用例中)。因此,它可能需要一些解决方法,但是基本概念已经存在,并且已经解决了原始问题。

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有