如何在 iPhone 的列表(tableView)和 iPad 的网格(collectionView)上显示数据
How to display the data on list(tableView) for iPhone and grid(collectionView) for iPad
我有一个代码评估,从来没有想过这样的事情;我必须以两种不同的布局显示从 API 检索到的数据:
为iPad;仅在横向模式和网格中。我将使用 UIcollectionView
对于iPhone;仅在纵向模式和列表中。我将使用 UItableView 或 StackView。
问题是如何从视图控制器实现填充集合视图或 table 视图的逻辑。我想我必须使用 UITraitCollection,但我知道它是否是更好的选择。
有人可以帮助我吗?
谢谢
您可以通过此方法获得设备
// 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
}
}
}
我有一个代码评估,从来没有想过这样的事情;我必须以两种不同的布局显示从 API 检索到的数据:
为iPad;仅在横向模式和网格中。我将使用 UIcollectionView
对于iPhone;仅在纵向模式和列表中。我将使用 UItableView 或 StackView。
问题是如何从视图控制器实现填充集合视图或 table 视图的逻辑。我想我必须使用 UITraitCollection,但我知道它是否是更好的选择。
有人可以帮助我吗? 谢谢
您可以通过此方法获得设备
// 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
}
}
}