简体   繁体   中英

change UICollectionView Cell size depending on the screen size

i was able to change the collectionView cell size using the function below but how can i make this function works with different screen size. so for example i want the height and width to be different on the iPad that the iPhone is there a way to do that

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            let width = UIScreen.main.bounds.width
            let height = UIScreen.main.bounds.height
            return CGSize(width: (width/5.5), height: (height/4.5))

        }

its easy to detect screen size, for each & every screen size of iPhone/iPad. Just follow this stuff.

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize
{

       if UIDevice().userInterfaceIdiom == .phone
            {
                switch UIScreen.main.nativeBounds.height
                {
                case 480:
                    print("iPhone Classic")
                case 960:
                    print("iPhone 4 or 4S")

                case 1136:
                    print("iPhone 5 or 5S or 5C")

                case 1334:
                    print("iPhone 6 or 6S")
                case 2208:
                    print("iPhone 6+ or 6S+")
                default:
                    print("unknown")
               }
           }

          if UIDevice().userInterfaceIdiom == .pad
          {
              if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad &&
                    (UIScreen.main.bounds.size.height == 1366 || UIScreen.main.bounds.size.width == 1366))
              {
                     print("iPad Pro : 12.9 inch")
              }
              else if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad &&
                    (UIScreen.main.bounds.size.height == 1024 || UIScreen.main.bounds.size.width == 1024))
             {
                    print("iPad 2")
                    print("iPad Pro : 9.7 inch")
                    print("iPad Air/iPad Air 2")
                    print("iPad Retina")
            }
             else
             {
                    print("iPad 3")
             }
      }

 }

So use this to set height & width as per your requirements. Even you can perform/set layout for particular screen.

Hope it helps you.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM