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

Posted

技术标签:

【中文标题】单击文本字段后 UIView 重新加载?【英文标题】:UIView reloaded after clicking a textfield? 【发布时间】:2015-08-22 13:44:38 【问题描述】:

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

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

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

我的代码:

  @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】:

Auto Layout 正在运行,并将您的徽标放回约束要求的位置。与其通过更改中心来修改框架,不如为垂直空间约束创建一个IBOutlet,然后更新constant 属性以将您的徽标向上移动。

要创建IBOutlet,首先单击表示情节提要中垂直约束的垂直条。然后 control-单击约束并拖动到您的 viewController 代码。给它起一个名字,比如topSpace



您需要调用 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
    )

【讨论】:

以上是关于单击文本字段后 UIView 重新加载?的主要内容,如果未能解决你的问题,请参考以下文章

在路由后,TextField单击重建/重新加载小部件

无法在标签栏控制器中重新加载表格视图

在我重新加载 UIView 之前,更新标签文本不起作用

重新加载可扩展列表时如何重新关注编辑文本...?

为啥我的 UIView 在重新加载后没有响应?

更改数组后无法在 Tableview 中重新加载数据?