【问题标题】:Animate UITextField动画 UITextField
【发布时间】:2015-01-04 17:47:00
【问题描述】:

我需要这样做,以便当我单击按钮时,UITextField 从view 外部向左转换到view。但是,当我执行以下代码时,UITextField 从视图控制器的中间开始,然后当单击按钮时,它从view 外部向左转换到view。我怎样才能做到这一点,以便在最初加载视图时,使用 swift 在单击按钮之前看不到它。

@IBAction func joinCircleButton(sender: AnyObject) {
    let button = sender as UIButton
    joinTextField.frame.origin.x=500
    joinTextField.frame.origin.y=100
    if (button.frame.origin.x - 75>0){
        UIView.animateWithDuration(0.5, animations:{
            button.frame = CGRectMake(button.frame.origin.x - 125, button.frame.origin.y,button.frame.size.width, button.frame.size.height)
            button.transform = CGAffineTransformMakeScale(0.5, 0.5);
            self.joinTextField.frame=CGRectMake(self.joinTextField.frame.origin.x - 325, self.joinTextField.frame.origin.y,self.joinTextField.frame.size.width, self.joinTextField.frame.size.height)
        })
    }
}

【问题讨论】:

    标签: ios animation swift uibutton


    【解决方案1】:

    您需要使用以下函数将 UITextField 或您希望隐藏的任何对象放在视图之外:

    func viewDidLayoutSubviews()
    

    在加载屏幕之前调用此函数。它准备好子视图,但尚未在屏幕上显示它们。所以这是一个隐藏 UITextField 的机会,如下所示:

     func viewDidLayoutSubviews(){
    
     // Here is just an EXAMPLE of what I'd do with my text field, you can change this however you wish
     // The point is that I am putting it away so no one can see it at first, and then later it will show
     joinTextField.center = CGPointMake(joinTextField.frame.origin.x-500, joinTextField.frame.origin.y)
    
    }
    

    现在应该在视图加载时隐藏文本字段,然后可以在以后设置动画。我希望这会有所帮助。

    【讨论】:

    • 它有效,谢谢。但是由于某种原因,每当我单击文本字段或任何其他对象时,所有动画对象都会回到动画之前的原始位置。我怎样才能阻止这种行为。
    • 您能否再描述一下。告诉我从头到尾的行为。
    • 1) 我单击按钮 2) 按钮向左移动,同时变小 3) 单击按钮时文本字段进入视图 4) 一切都已完成动画 5) 我单击textfield 6)按钮回到原来的位置,但仍然是小尺寸,并且文本字段从视图中消失
    • 我以前的动画也遇到过这种情况。我无法解释这种现象,我相信它与“viewdidlayoutsubviews”有关。每当我制作动画时,我都不使用按钮动作来执行它们,但尽管如此。您可以做的是使用布尔值并首先将其设置为 false。在“viewdidlayoutsubviews”中放置“if else”语句,如果布尔值为 false,则执行动画,否则不执行任何操作。现在在您的按钮操作中将布尔值设置为 True,也许这可以防止这些动画问题。否则,我们可以私聊,我可以好好看看。
    • 我相信“viewdidlayoutsubviews”会再次被调用,或者其他什么。我不确定,但我遇到过事情变小或者动画一遍又一遍地运行的情况。
    猜你喜欢
    • 2015-01-16
    • 2012-01-06
    • 2015-03-15
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多