viewDidLayoutSubviews вызывается при изменении метки (xcode) (swift)

У меня есть код, кнопка переключения и анимация в моем коде. Когда я нажимаю кнопку переключения -> анимация запускается, метка меняется. Ниже приведен мой пример кода.

override func viewDidLayoutSubviews() {
println("viewDidLayoutSubviews is called")
// Initial state of my animation.
     }

 @IBAction func Toggled(sender: AnyObject) {
    CallTextChange() 
   // Two different Animations        
     }

 func CallTextChange() { // Change text here}

Каждый раз, когда я меняю текст в метке, вызывается viewDidLayoutSubviews. Есть ли способ перестать звонить каждый раз, когда я меняю ярлык?

3 ответа

Я нашел ответ на мою проблему.

Когда мы создаем UIImage путем перетаскивания из объекта, предоставленного Xcode, изображение временно помещается туда, где оно было статически размещено. Таким образом, при анимации в середине, когда вызывается viewDidLayoutSubviews, изображение помещается в статическое место. Таким образом, UIImage должен быть создан программно.

CreateImage.image = UIImage(named: "Image.png")
CreateImage = UIImageView(frame: CGRect(x: 0, y: 0, width: CreateImage.image!.size.width/6, height: CreateImage.image!.size.height/6))
self.view.addSubview(CreateImage)

Попробуйте передать одно значение логического флага в функцию

Я думаю, что когда вы измените текст и UILabel, он изменит свой собственный размер контента, который, в свою очередь, уведомит систему о ретрансляции иерархии представления. Поэтому кажется неизбежным, что viewDidLayoutSubviews будет вызван.

Либо вы устанавливаете логический флаг, чтобы исходный код анимации выполнялся только один раз, либо перемещаете код в другое место, например метод viewDidLoad().

Другие вопросы по тегам