繁体   English   中英

标签更改(xcode)(swift)时将调用viewDidLayoutSubviews

[英]viewDidLayoutSubviews is called when label changes (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中的文本时,都会调用一次。 每次更改标签时,有没有办法停止调用它?

我找到了解决我问题的答案。

当我们从Xcode提供的对象中拖放创建UIImage时,图像被临时放置在静态放置的位置。 因此,在调用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()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM