我有一个应用程序,其视图包含使用UIBezierPath制作的4个圆圈。

ios - 仅在首次显示 View 时在viewDidAppear中执行操作-LMLPHP

您可以单击某个圆圈以获取有关其中一项的详细信息

ios - 仅在首次显示 View 时在viewDidAppear中执行操作-LMLPHP

事实是,圆在具有某些约束的子视图中,因此我无法在viewDidLoad方法中绘制它们(我尝试过但很烂),因此整个绘制过程都是在viewDidAppear方法中完成的,但是这会使圆成为每次视图出现时绘制。

因此,如果我单击一个圆圈,然后回到圆圈视图,则很多时间都会导致:

ios - 仅在首次显示 View 时在viewDidAppear中执行操作-LMLPHP

我也尝试使用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。

10-07 15:20