自作した View ってわりと使う頻度があるので大変、その中でも複数の情報を保有する View を作ってしまうと結構時間がかかってしまいます。 その場合、 ViewController を作成して管理する方法もありますが、たまーに面倒だな ViewController を作るレベルでもないんだよなってときに朗報です。 非同期で描画しちゃいましょう。 そうすると、ちょっとだけフリーズするストレスを減らすことができます。
DispatchQueue.main.async { [weak self] in guard let strongSelf = self else { return } for item in strongSelf.items { // ... } strongSelf.invalidateIntrinsicContentSize() }
((invalidateIntrinsicContentSize
はGoogle 翻訳によると「固有のコンテンツサイズを無効にする」なので、既存のコンテンツのサイズが変更されたときに呼び出すとサイズの変更を反映させてくれるようです。))