我的代码中有标签,切换按钮和动画。当我按下切换按钮 - >动画开始,标签更改。下面是我的代码示例。
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中的文本时都会被调用。 有没有办法在每次更改标签时停止调用它?
答案 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()方法。