Кнопка Dynami c с анимацией Lott ie - PullRequest
0 голосов
/ 14 марта 2020

У меня есть простое UIButton с title:

let signUpButton: CustomButton = {
    let v = CustomButton(type: .system)
    v.translatesAutoresizingMaskIntoConstraints = false
    v.setTitle("Registrieren", for: .normal)
    v.titleLabel?.font = UIFont(name: "AvenirNext-DemiBold", size: 15)
    v.titleLabel?.textColor = .white
    v.setTitleColor(.white, for: .normal)
    v.backgroundColor = UIColor.darkGray
    v.layer.cornerRadius = 3
    v.addTarget(self, action: #selector(signUpButtonTapped(_:)), for: .touchUpInside)
    return v
}()

Теперь моя цель состоит в том, чтобы при нажатии кнопки title исчезал, button больше не должен был быть кликабельно, и loading-animation (Lott ie) должны отображаться. После щелчка есть две опции:

  1. Все в порядке, данные извлекаются, и я present другой ViewController
  2. произошла какая-то ошибка, loading-animation исчезает, title отображается снова

Это моя buttonTapped -функция (пока не полная функция для простоты):

@objc func signUpButtonTapped(_ sender: Any) {

    let logoAnimation = AnimationView(name: "LoadingAnimation")
    logoAnimation.contentMode = .scaleAspectFit
    logoAnimation.translatesAutoresizingMaskIntoConstraints = false
    self.view.addSubview(logoAnimation)

    logoAnimation.centerXAnchor.constraint(equalTo: signUpButton.centerXAnchor).isActive = true
    logoAnimation.centerYAnchor.constraint(equalTo: signUpButton.centerYAnchor).isActive = true
    logoAnimation.heightAnchor.constraint(equalToConstant: 50).isActive = true
    logoAnimation.widthAnchor.constraint(equalToConstant: 50).isActive = true
    logoAnimation.loopMode = .loop
    logoAnimation.play()

    if error!= nil {
      logoAnimation.stop()
      logoAnimation.removeFromSuperView()
    } else {
          /* present new VC */ 
    }

Теперь актуальный вопрос, как Я заставляю title появляться / исчезать, и что я могу сделать, чтобы button не нажимал во время «загрузки»?

Я думал о создании UIView с точно таким же размером / цветом и поместите его поверх button, но это кажется не очень чистым и умным.

Есть ли быстрый и простой способ сделать это? Благодарен за любую помощь :) Если вам нужно больше деталей, просто дайте мне знать.

1 Ответ

2 голосов
/ 14 марта 2020

Вы можете сделать это, чтобы скрыть кнопку

btn.setTitle("", for: .normal)

или

btn.isHidden = true
...