Как отобразить данные в списке (tableView) для iPhone и grid (collectionView) для iPad - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть оценка кода, и я никогда не думаю о чем-то подобном; Я должен отображать данные, полученные из API, в двух разных форматах:

  • для iPad; только в ландшафтном режиме и в сетке. Я сделаю это с UIcollectionView

  • для iPhone; только в портретном режиме и в списке. Я сделаю это с помощью UItableView или StackView.

Проблема заключается в том, как реализовать logi c, который заполняет представление коллекции или представление таблицы из контроллера представления. Я думаю, что я должен использовать UITraitCollection, но я знаю, если это лучший вариант.

Кто-нибудь может мне помочь? Спасибо

1 Ответ

1 голос
/ 26 февраля 2020

Вы можете получить устройство с помощью этого метода

// 1. запросить экземпляр UITraitCollection

  let deviceIdiom = UIScreen.main.traitCollection.userInterfaceIdiom

// 2. проверить идиому

  switch (deviceIdiom) {

 case .pad:
    print("iPad style UI")
 case .phone:
    print("iPhone and iPod touch style UI")
 case .tv: 
   print("tvOS style UI")
 default:
    print("Unspecified UI idiom")
}

А для ориентации используйте этот метод: -

struct Orientation {
// indicate current device is in the LandScape orientation
  static var isLandscape: Bool {
    get {
        return UIDevice.current.orientation.isValidInterfaceOrientation
            ? UIDevice.current.orientation.isLandscape
            : UIApplication.shared.statusBarOrientation.isLandscape
    }
  }
// indicate current device is in the Portrait orientation
  static var isPortrait: Bool {
    get {
        return UIDevice.current.orientation.isValidInterfaceOrientation
            ? UIDevice.current.orientation.isPortrait
            : UIApplication.shared.statusBarOrientation.isPortrait
      }
   }
}
...