Swift で描画に時間がかかると感じたときは非同期処理で対処しよう

自作した View ってわりと使う頻度があるので大変、その中でも複数の情報を保有する View を作ってしまうと結構時間がかかってしまいます。 その場合、 ViewController を作成して管理する方法もありますが、たまーに面倒だな ViewController を作るレベルでもないんだよなってときに朗報です。 非同期で描画しちゃいましょう。 そうすると、ちょっとだけフリーズするストレスを減らすことができます。

DispatchQueue.main.async { [weak self] in
  guard let strongSelf = self else {
    return 
  }
  
  for item in strongSelf.items {
    // ...
  }

  strongSelf.invalidateIntrinsicContentSize()
}

((invalidateIntrinsicContentSizeGoogle 翻訳によると「固有のコンテンツサイズを無効にする」なので、既存のコンテンツのサイズが変更されたときに呼び出すとサイズの変更を反映させてくれるようです。))

バーンダウンチャートの悪いところ

見積もりの甘いやつが使うと追加タスクがもりもり増える
どうしたらこんなに甘い見積もりができるんだってくらいもりもり増える
後半怒涛の追加タスクの増量を横目で見た

その点、ガントチャートは期限まで残りの日数が可視化されるので早めに対処ができる(締め切り間近感によるタスクの消化の促進)ので
多少甘くても後ろでカバーが可能(流石に締め切りを期限ギリギリに設定してると無理なのだけど)
そして、追加タスクのお願いがあれば期限を延長しないと正常に書き込めないので、追加費用と時間を要求しやすい

バーンダウンチャートは進んでる感を感じたい人に補助的に見せるのがよいでしょう
(何が終わって何がまだなのかもまともに見れないし)