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().