【问题标题】:How to display the data on list(tableView) for iPhone and grid(collectionView) for iPad如何在 iPhone 的 list(tableView) 和 iPad 的 grid(collectionView) 上显示数据
【发布时间】:2020-02-26 11:55:10
【问题描述】:

我有一个代码评估,从来没有想过这样的事情;我必须以两种不同的布局显示从 API 检索到的数据:

  • 适用于 iPad;仅在横向模式和网格中。我会用 UIcollectionView 来做

  • 适用于 iPhone;仅在纵向模式和列表中。我会用 UItableView 或 StackView 来做。

问题是如何实现从视图控制器填充集合视图或表视图的逻辑。我想我必须使用 UITraitCollection 但我知道它是否是更好的选择。

有人可以帮助我吗? 谢谢

【问题讨论】:

  • 使用 UICollectionView 处理两个视图,根据设备/屏幕宽度调整布局(单元格大小)。
  • 为什么不只使用集合视图和两个不同的单元格并调整大小.. 同时将scrollDirectionverticalhorizontal 相应地更改。
  • 两个答案都很好,但我怎么知道设备和方向

标签: ios swift iphone ipad orientation


【解决方案1】:

您可以通过此方法获取设备

// 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
      }
   }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多