【问题标题】:UIView reloaded after clicking a textfield?单击文本字段后 UIView 重新加载?
【发布时间】: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
    })
}

【问题讨论】:

    标签: ios swift cocoa-touch uiview


    【解决方案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
        })
    }
    

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2017-08-21
      • 1970-01-01
      • 2010-11-24
      • 2017-01-18
      相关资源
      最近更新 更多