我有一个应用程序,其 View 包含 4 个用 UIBezierPath 制作的圆圈。
你可以点击某个圈子来获取其中一个项目的详细信息
问题是,圆圈位于有一些约束的 subview 中,所以我无法在 viewDidLoad 方法中绘制它们(我尝试过但很乱)所以整个绘制过程是在 viewDidAppear 方法中完成的,但这使得每次出现 View 时要绘制的圆圈。
所以如果我点击一个圈子然后返回到圈 subview 很多时间我最终会得到:
我还尝试使用 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)
}
最佳答案
如果您希望此代码仅在 View 第一次出现时执行,只需添加一个表示“已初始化”的 bool 变量。如果不在 viewDidAppear 中运行代码,则将其设置为 true。
关于ios - 仅当 View 首次显示时才在 viewDidAppear 中执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37807627/