Какой аниматор я должен использовать для обмена значениями UILabel.text? - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь поменять только текстовые значения UILabel двух разных UILabels .. Сейчас я делаю это с UIView.animate (withDuration: 0.5), но, похоже, он вообще не анимируется.

enter image description here

Вот мой текущий код,

@IBOutlet weak var nameLabel1: UILabel!
@IBOutlet weak var nameLabel2: UILabel!
@IBOutlet weak var positionLabel1: UILabel!
@IBOutlet weak var positionLabel2: UILabel!
@IBOutlet weak var emailLabel1: UILabel!
@IBOutlet weak var emailLabel2: UILabel!


struct Person{
    var name: String?
    var position: String?
    var email: String?
}


@IBAction func clickMe2Tapped(_ sender: Any) {
    print("first click me tapped")
    var tempPerson = Person()
    tempPerson.name = nameLabel1.text
    tempPerson.position = positionLabel1.text
    tempPerson.email = emailLabel1.text

    UIView.animate(withDuration: 0.5) {
        self.nameLabel1.text = self.nameLabel2.text
        self.positionLabel1.text = self.positionLabel2.text
        self.emailLabel1.text  = self.emailLabel2.text

        self.nameLabel2.text = tempPerson.name
        self.positionLabel2.text = tempPerson.position
        self.emailLabel2.text = tempPerson.email
    }
}

1 Ответ

1 голос
/ 06 марта 2019

Есть много способов достижения цели. Следующее является одним из них.

    @IBAction func clickMe2Tapped(_ sender: Any) {
    print("first click me tapped")

    //swap data
    var tempPerson = Person()
    tempPerson.name = nameLabel1.text
    tempPerson.position = positionLabel1.text
    tempPerson.email = emailLabel1.text


    self.nameLabel1.text = self.nameLabel2.text
    self.positionLabel1.text = self.positionLabel2.text
    self.emailLabel1.text  = self.emailLabel2.text

    self.nameLabel2.text = tempPerson.name
    self.positionLabel2.text = tempPerson.position
    self.emailLabel2.text = tempPerson.email

    //Add animation
    let transition = CATransition.init()
    transition.type = .moveIn
    transition.timingFunction = CAMediaTimingFunction(name: .easeOut)
    transition.subtype = CATransitionSubtype.fromBottom
    transition.duration = 0.5
      self.nameLabel1.layer.add(transition, forKey: nil)
      self.positionLabel1.layer.add(transition, forKey: nil)
      self.emailLabel1.layer.add(transition, forKey: nil)
      self.nameLabel2.layer.add(transition, forKey: nil)
      self.positionLabel2.layer.add(transition, forKey: nil)
      self.emailLabel2.layer.add(transition, forKey: nil)

 }
...