Swift uicollectionview iPad Traffic layout not work

Descripción simplificada del problema

actualmente está experimentando algunos problemas de enrutamiento mientras utiliza la vista de colección en el iPad. Actualmente estoy desarrollando una aplicación que muestra mensajes en streaming para que se vean hermosos y de moda. Sin embargo, cuando probé la aplicación en todos los dispositivos, noté que la pantalla cambiaba:
IPad de quinta generación
  • iPad Air
  • iPad Air 2
  • iPad pro (9,7 pulgadas)
  • Pero el resto del iPad parece normal. ¿Cuál es el problema? Actualmente estoy usando el siguiente código para establecer el estilo de diseño en collectionview:
     func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    
            switch UIDevice().screenType {
            case .iPhoneX:
                return CGSize(width: 180.0, height: 180.0)
                break
            case .iPhone5:
                return CGSize(width: 152.0, height: 152.0)
                break
            case .iPhone6:
                return CGSize(width: 180.0, height: 180.0)
                break
            case .iPhone6Plus:
                return CGSize(width: 200.0, height: 200.0)
                break
            case .iPad:
                return CGSize(width: 400.0, height: 400.0)
                break
            case .iPadTwo:
                return CGSize(width: 400.0, height: 400.0)
                break
            case .iPadThree:
                return CGSize(width: 400.0, height: 400.0)
                break
            default:
                return CGSize(width: 200.0, height: 200.0)
                break
            }
        }
    
    "IPad 2"y "iPad 3"son sólo algunas de las enumeraciones que estoy tratando de crear, tratando de determinar el tipo de iPad, y si obtengo alguna salida de texto impreso (pero sólo cae a los valores predeterminados), independientemente del iPad.
    Este es mi tamaño de pantalla:
     switch UIScreen.main.nativeBounds.height {
            case 960:
                return .iPhone4
            case 1136:
                return .iPhone5
            case 1334:
                return .iPhone6
            case 2208:
                return .iPhone6Plus
            case 1024:
                return .iPad
            case 1366:
                return .iPadTwo
            case 834:
                return .iPadThree
            case 2436:
                return .iPhoneX
                break
            default:
                return .unknown
            }
    
    Aquí está la representación visual de mi problema, que aparece en los dispositivos listados, pero no en otros dispositivos:
    Cómo debería ser:
    This is how it's supposed to look like.
    Su apariencia en los dispositivos listados:
    enter image description here
    Le agradecería que alguien me ayudara a resolver este problema, porque parece que no puedo encontrar una solución que funcione.

    La respuesta más útil para mí

    para referencia. En lugar de establecer el tamaño de la celda de colección a sizeForItemAt indexPath, le sugiero que pruebe algunos métodos comunes.
    Usted debe ampliar UICollectionViewFlowLayout y crear el siguiente nuevo diseño,
    class HomeLayout: UICollectionViewFlowLayout {    
        var numberOfItemsPerRow : Int {
            get{
                var value = 0
                if UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiom.phone {
                    value = 3
                } else {
                    value = 5
                }
                return value
            }
            set {
                self.invalidateLayout()
            }
        }
    
        override func prepare() {
            super.prepare()
            if self.collectionView != nil {
                var newItemSize = self.itemSize
                let itemsPerRow = max(self.numberOfItemsPerRow, 1)
                let totalSpacing = self.minimumInteritemSpacing * CGFloat(itemsPerRow - 1)
                let newWidth = (self.collectionView!.bounds.size.width - self.sectionInset.left - self.sectionInset.right - totalSpacing) / CGFloat(itemsPerRow)
                newItemSize.width = max(newItemSize.width,newWidth)
                if self.itemSize.height > 0 {
                    let aspectRatio: CGFloat = self.itemSize.width / self.itemSize.height
                    newItemSize.height = newItemSize.width / aspectRatio
                }
                self.itemSize = newItemSize            
            }
        }
    }
    
    Ahora asigne UICollectionViewFlowLayout de collectionview a HomeLayout desde el constructor de interfaz.
    enter image description here
    Ajuste sectionInsets y Min Spacing de Storyboard.
    Sólo para referencia. En consecuencia, numberOfItemsPerRow se establece en HomeLayout.