当按下按钮但卡住时,尝试在UIView.animate中更改按钮标题和label.center.x.为什么? Swift 4 Xcode 9.4

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当按下按钮但卡住时,尝试在UIView.animate中更改按钮标题和label.center.x.为什么? Swift 4 Xcode 9.4相关的知识,希望对你有一定的参考价值。

我的问题

我正在尝试使用UIView.animate(..)在touchInside按钮时使用标签做一些动画。一切都还行,直到我添加一行:“self?.confirm.setTitle(”Đăngnhập“,for:。normal)。动画不起作用。

我的意志

我想将Register下面的黄色下划线切换到下面的Login。

代码是好的

@IBAction func signUpAction(_ sender:Any?){
    if (signup == false){
        signup = true
        UIView.animate(withDuration: 0.4, delay: 0, options: [.curveEaseIn], animations: {[weak self] in
            self?.underlineSignup.center.x -= (self?.underlineSignup.bounds.width)!
           self?.view.layoutIfNeeded()
        }, completion: nil)
    }
}
@IBAction func signInAction(_ sender:Any?){
    if (signup == true){
        signup = false
        UIView.animate(withDuration: 0.4, delay: 0, options: [.curveEaseIn], animations: {[weak self] in
            self?.underlineSignup.center.x += (self?.underlineSignup.bounds.width)!
            self?.view.layoutIfNeeded()
        }, completion: nil)
    }
}

It work

但是当我添加.setTitle时

@IBAction func signUpAction(_ sender:Any?){
    if (signup == false){
        signup = true
        UIView.animate(withDuration: 0.4, delay: 0, options: [.curveEaseIn], animations: {[weak self] in
            self?.underlineSignup.center.x -= (self?.underlineSignup.bounds.width)!
            self?.confirm.setTitle("Đăng ký", for: .normal)
            self?.view.layoutIfNeeded()
        }, completion: nil)
    }
}
@IBAction func signInAction(_ sender:Any?){
    if (signup == true){
        signup = false
        UIView.animate(withDuration: 0.4, delay: 0, options: [.curveEaseIn], animations: {[weak self] in
            self?.underlineSignup.center.x += (self?.underlineSignup.bounds.width)!
            self?.confirm.setTitle("Đăng nhập", for: .normal)
            self?.view.layoutIfNeeded()
        }, completion: nil)
    }
}

It stuck, only the title of button confirm change, the underline doesn't move

请任何人都可以解释这种情况。

编辑:

动画工作,但它的目的地始终是第一个Đăngký(动画来自左侧或右侧,结果总是第一位)

答案

我想我知道它是怎么回事。因为在setTitle中有updateFrame Constraintlayout的视图。构建按钮时我有一个contraintlayout。当我设置标题时,它使用约束重置视图。这就是我对此的看法。

另一答案

尝试将'setTitle'完成。

UIView.animate(withDuration: 0.15, delay: 0, options: .curveLinear, animations: {

       self?.underlineSignup.center.x -= (self?.underlineSignup.bounds.width)!
       self?.view.layoutIfNeeded()

        }){

               //completion
             self?.confirm.setTitle("Đăng ký", for: .normal)


        }

以上是关于当按下按钮但卡住时,尝试在UIView.animate中更改按钮标题和label.center.x.为什么? Swift 4 Xcode 9.4的主要内容,如果未能解决你的问题,请参考以下文章

当按下后退按钮并打开导航抽屉时,我的应用程序关闭而不是关闭抽屉

当按下默认插入记录按钮 oracle 表单时触发

当按下按钮或视图迅速消失时

当按下 Flutter 中编程的按钮时,有没有办法可以运行 python 脚本?

当按下自定义按钮时,UILabel 不会更新(Objective-C)

Swift:当按下按钮时更改按钮样式并重设其他按钮