Попытка изменить заголовок кнопки и label.center.x в UIView.animate, когда кнопка застряла, но застряла. Зачем? Swift 4 Xcode 9.4 - PullRequest
0 голосов
/ 29 августа 2018

Моя проблема

Я пытаюсь сделать анимацию с меткой, используя UIView.animate (..) при нажатии кнопки TouchInside. Все будет в порядке, пока я не добавлю строку: «self? .Confirm.setTitle» («Đăng nhập», для: .normal). Анимация не работает.

Моя воля

Я хочу желтое подчеркивание ниже Kăng Ký переключиться на ниже Đăng nhập .

Хорошо, когда код

@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)
    }
}

Работает

Но когда я добавляю .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)
    }
}

Застрял, только название кнопки подтверждает изменение, подчеркивание не двигается

Пожалуйста, кто-нибудь может объяснить эту ситуацию.

РЕДАКТИРОВАТЬ:

Анимация работает, но ее назначение всегда на первом месте, которое в Đăng ký (анимация идет слева или справа от нее, результат всегда на первом месте)

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Попробуйте положить '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)


        }
0 голосов
/ 29 августа 2018

Кажется, я знал, как это. Потому что в setTitle есть updateFrame Constraintlayout представления. У меня есть противопоказания при сборке кнопки. Когда я устанавливаю заголовки, он сбрасывает вид, используя ограничения. Вот что я думаю об этом.

...