无意的类嵌套 - 代码运行 10 太频繁(Swift)



所以这有点奇怪,我不太明白发生了什么......

所以我在彼此之间做了一些自定义类/对象(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方法。

最新更新