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

时间:2015-03-25 10:48:57

标签: swift xcode autolayout uilabel viewdidlayoutsubviews

我的代码中有标签,切换按钮和动画。当我按下切换按钮 - >动画开始,标签更改。下面是我的代码示例。

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 个答案:

答案 0 :(得分:1)

我找到了问题的答案。

当我们通过从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)

答案 1 :(得分:0)

尝试在函数

中传递一个布尔标志值

答案 2 :(得分:0)

我认为当您更改UILabel的文本时,它将更改其内在内容大小,而后者又会通知系统重新布局视图层次结构。因此,调用viewDidLayoutSubviews似乎是不可避免的。

要么放置一个布尔标志,要使初始动画代码只执行一次,要么将代码移到其他地方,如viewDidLoad()方法。