无法以编程方式移动UITextView

时间:2016-03-08 08:47:27

标签: ios autolayout swift2 uiviewanimation

这是我的问题,我想为我的登录屏幕设置动画,这是一个基本屏幕,2个UITextView和2个按钮(登录和注册)

我希望在应用启动时为我的用户名字段显示在屏幕外并为其设置动画,所以这是我的代码:

override func viewWillAppear(animated: Bool) {
    self.navigationController?.navigationBarHidden = true
    print (usernameField.center.x)

    usernameField.center.x -= view.bounds.width
    print (view.bounds.width)
    print (usernameField.center.x)

}

这是输出:

300.0
375.0
-75.0

所以我的usernameField的最终x是-75.0,但在所有情况下它都在我的应用程序的中心。

我认为这是因为我在故事板中对其应用了约束? (中心按钮和textview的建议约束)

感谢您的帮助

编辑: 删除约束并没有解决我的问题..

1 个答案:

答案 0 :(得分:1)

您需要继续引用使用直接邻居/边距维护前导空格的约束。然后将适当的值设置为此约束的常量属性。然后要动画,你需要打电话给 动画块中的layoutIfNeeded方法。

最初确保您的视图超出界限并位于视图的左侧。

有约束的出口说 -

@IBOutlet weak var constraint : NSLayoutConstraint!

override func animateIn(){
  //Do any pending layout
  self.view.layoutIfNeeded()
  constraint.constant += 100 //<-- set appropriate value for your case
  //Animate the constraint change to bring in the button into the screen

  UIView.animateWithDuration(0.2, animations: {
    self.view.layoutIfNeeded()
})

}

参见: How do I animate constraint changes?