单击文本字段后UIView重新加载?

时间:2015-08-22 13:44:39

标签: ios swift cocoa-touch uiview

我试图制作一个非常简单的登录页面。一切都很好,直到我开始做一些动画。

当我点击登录按钮时,我将徽标100px移动到顶部,然后我显示输入。

工作正常,但当我点击文本字段进行编辑时,图像(徽标)会返回原来的位置!

我的代码:

  @IBAction func LoginClick(sender: AnyObject) {

    UIView.animateWithDuration(2, animations: {
        var center = self.logoImage.center
        center.y -= 100
        self.logoImage.center = center
        self.usernameInput.hidden=false
        self.passwordInput.hidden=false
        self.usernameLine.hidden=false
        self.passwordLine.hidden=false
        self.slidesImg.hidden=true
    })
}

1 个答案:

答案 0 :(得分:3)

自动布局正在运行,并将徽标放回到约束所应该的位置。您应该为垂直空间约束创建IBOutlet,然后更新constant属性以移动徽标,而不是通过更改中心来修改框架。

要创建IBOutlet,首先单击表示Storyboard中垂直约束的垂直条。然后 control - 单击约束并拖动到viewController代码。给它命名为topSpace

wire up vertical constraint

您需要调用layoutIfNeeded()来设置约束更改的动画:

@IBOutlet weak var topSpace: NSLayoutConstraint!

@IBAction func LoginClick(sender: AnyObject) {

    topSpace.constant -= 100
    UIView.animateWithDuration(2, animations: {
        self.logoImage.layoutIfNeeded()
        self.usernameInput.hidden=false
        self.passwordInput.hidden=false
        self.usernameLine.hidden=false
        self.passwordLine.hidden=false
        self.slidesImg.hidden=true
    })
}