所以这有点奇怪,我不太明白发生了什么......
所以我在彼此之间做了一些自定义类/对象(UIViews),如下所示:
class Example1: UIView {
[properties etc.]
let Test = Example2()
Test.frame = CGRe...
addSubview(Test)
}
class Example2: UIView {
[properties etc.]
}
在向 Example2 添加某种函数之前,这一切都可以正常工作。然后它将多次运行所有内容(如果您调用示例 1,示例 2 = 1,2,它将按以下顺序运行:
1、1、2、2、1、2、2、2、2 )。这样做的问题是,它将创建同一对象的多个版本,但在其他地方计算时具有不同的值(大小和位置等)。
我希望我能够像这样解释我的问题,否则整个(相当混乱,因为我已经尝试解决这个问题一段时间了)代码:http://pastebin.com/4D3kt1uN(如果你喜欢,你可以尝试在 xcode 中运行它以了解我的意思)。
任何帮助将不胜感激!
代码的问题在于layoutSubviews
方法中添加子视图。
override func layoutSubviews() {
...
let GuideLine = UIView()
addSubview(GuideLine)
...
}
在应用程序的生存期内,可以多次调用 layoutSubviews
方法。例如,请参阅此SO问题"何时调用布局子视图?因此,每次布局更改时,您的子视图都会添加到屏幕上。这就是您看到视图的多个版本的原因。尝试将逻辑移出layoutSubviews
方法。