今回は、UITableView を画面回転時に再描画する方法についてです。
そこまで複雑なことはしていないのですが、画面回転を検知する書き方がちょっと面倒だったので、備忘録としてまとめ。
参考にさせていただいた記事はこちらから。
【swift】iosで画面の回転を検知してUITableViewを再描画する – とりあえずphpとか
http://kimagureneet.hatenablog.com/entry/2017/01/09/123659
サンプルコードは下記の通りです。
override func viewDidAppear(_ animated: Bool) {
    // 画面回転を検知
    NotificationCenter.default.addObserver(self,
                                           selector:#selector(didChangeOrientation(_:)),
                                           name: UIDevice.orientationDidChangeNotification,
                                           object: nil)
}
@objc private func didChangeOrientation(_ notification: Notification) {
    //画面回転時の処理
    tableView.frame.size = CGSize(width: view.frame.width, height: view.frame.height)
    tableView.setNeedsDisplay()
    tableView.reloadData()
}
まず、viewDidAppear 内に画面が回転したことを検知する処理を追加します。
画面が回転すると、4行目で指定した関数が実行されるので、9行目からの関数 didChangeOrientation 内で、画面回転した時に行いたい処理を記載します。
今回は UITableView を使用しているので、TableView のサイズを再定義し、データを再表示しています。
処理としては以上です。
なお、12行目の setNeedsDisplay は UIView に「再描画が必要」というフラグを設定する処理とのことです。
ですが、実際に再描画の処理を行うことはせず、別の処理、今回で言うと reloadData を行う必要があるとのこと。
……いまいちよくわからないのですが、必要みたいなので追加しております。
以上、端末の画面が回転した際に UITableView を再描画する方法でした。
ご参考になれば幸いです。
 
					         
               
                       
                