所以这有点奇怪,我不太明白发生了什么......
所以我在彼此内部制作了一些自定义类/对象(UIViews),如下所示:
class Example1: UIView {
[properties etc.]
let Test = Example2()
Test.frame = CGRe...
addSubview(Test)
}
class Example2: UIView {
[properties etc.]
}
这一切都正常,直到你向Example2添加某种功能。然后它将多次运行所有内容(如果你调用Example1,Example2 = 1,2,它将按此顺序运行:1,1,2,2,1,2,1,2,2,2)。
这个问题在于它会创建同一个对象的多个版本,但是会有不同的值,因为它们是在其他地方计算的(大小和位置等)。
我希望我能够像这样解释我的问题,否则就是整个(因为我一直在努力解决这个问题而非常混乱)代码:http://pastebin.com/4D3kt1uN(如果你,就像你可以尝试一样并在xcode中运行它以查看我的意思。)
非常感谢任何帮助!
答案 0 :(得分:0)
您的代码存在的问题是您要在layoutSubviews
方法中添加子视图。
override func layoutSubviews() {
...
let GuideLine = UIView()
addSubview(GuideLine)
...
}
在应用程序的生命周期中,可以多次调用layoutSubviews
方法。例如,请参阅此SO问题“When is layoutSubviews called?”。
因此,每当布局发生变化时,您的子视图都会添加到屏幕上。这就是您看到多个版本的视图的原因。
尝试将您的逻辑移出layoutSubviews
方法。