5

マルチタスキングを使用して iPad でアプリをテストし、アプリでアプリのサイズを変更すると、コレクション ビューのセルのサイズを変更する必要があります。そうしないと、ビュー ウィンドウに収まりません。

などの対策を行いました。

  • 細胞の大きさを変える検出装置
  • ビューのサイズを測定して、セルがウィンドウ内に収まるようにします
  • ユーザーがデバイスの向きを変更した場合にオブザーバーを追加する

これはすべて素晴らしいことですが、マルチタスクを使用しているときに実際にウィンドウ サイズを変更したり、フル スクリーン アプリに戻ったりすると、セル サイズが変更されず、場違いに見えます。これは、方向の切り替えまたはビュー コントローラーの切り替えによって強制されるか、再度実行されるまで続きviewWillLoadますviewDidLoad

view.frameでは、サイズが変更された場合に通知を設定するにはどうすればよいですか?

4

3 に答える 3

4

問題を複雑にしすぎていると思います。次を使用して、デバイスを回転またはサイズ変更すると、それに応じてコレクション ビューも変更されます。

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    guard let collectionLayout = collectionView.collectionViewLayout as? UICollectionViewFlowLayout else {
        return
    }

    if UIApplication.shared.statusBarOrientation == UIInterfaceOrientation.landscapeLeft ||
        UIApplication.shared.statusBarOrientation == UIInterfaceOrientation.landscapeRight {
        //here you can do the logic for the cell size if phone is in landscape
    } else {
        //logic if not landscape
    }

    collectionLayout.invalidateLayout()
}
于 2016-03-30T15:45:37.190 に答える