我有一个应用程序,其视图包含使用UIBezierPath制作的4个圆圈。
您可以单击某个圆圈以获取有关其中一项的详细信息
事实是,圆在具有某些约束的子视图中,因此我无法在viewDidLoad方法中绘制它们(我尝试过但很烂),因此整个绘制过程都是在viewDidAppear方法中完成的,但是这会使圆成为每次视图出现时绘制。
因此,如果我单击一个圆圈,然后回到圆圈视图,则很多时间都会导致:
我也尝试使用viewDidLayoutSubviews方法,但是出现了无限循环。所以我想问是否有人有想法要解决这个问题。 (以最干净的方式)
这是我的viewDidAppear的样子:
override func viewDidAppear(animated: Bool) {
createCircle(firstCircle, text: "Breathe", color: blue, directionForAdjustment: 1, identifier: 0)
createCircle(secondCircle, text: "Cocoon", color: green, directionForAdjustment: 1, identifier: 1)
createCircle(thirdCircle, text: "Smokeless", color: cyan, directionForAdjustment: -1, identifier: 2)
createCircle(fourthCircle, text: "Sleep", color: purple, directionForAdjustment: -1, identifier: 3)
}
最佳答案
如果您只想在视图第一次出现时执行此代码,只需添加一个布尔变量,说明“已初始化”。如果未在viewDidAppear中运行代码,则将其设置为true。