就我而言,我正在根据traitCollection.horizontalSizeClass更改视图的布局 这是我的代码段。
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.horizontalSizeClass == .regular {
// 2
NSLayoutConstraint.deactivate(compactConstraints)
NSLayoutConstraint.activate(regularConstraints)
// 3
socialMediaView.axis = .horizontal
} else {
// 4
NSLayoutConstraint.deactivate(regularConstraints)
NSLayoutConstraint.activate(compactConstraints)
socialMediaView.axis = .vertical
}
}
iphone 7 plus 和 iphone x 在纵向模式下的所有操作
在横向模式下,我希望兔子图像显示在左侧,并且所有socialMedias轴的stackview将为水平
但是在iPhone X横向模式下不会出现,而在iPhone 7下会出现。请检查以下屏幕截图
答案 0 :(得分:1)
看着你的问题和状况,我发现你的状况有问题。您应该检查 verticalSizeClass 而不是horizontalSizeClass。
检查水平尺寸等级时。
肖像:所有iPhone设备的宽度都很紧凑,因此每次进入其他条件并正确设置视图。
在景观中:所有iPhone Plus (iPhone 6s Plus,iPhone 7 Plus和iPhone 8 plus)设备具有常规宽度,所有其他iPhone (iPhone 6s ,6SE,iPhone 7和iPhone 8,iPhone X)。设备具有紧凑的宽度,因此,对于所有其他设备,它都可以正常工作,但不适用于其他设备。
有关更多信息,请阅读官方文档here
因此,将您的代码更新为此。
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if traitCollection.verticalSizeClass == .regular {
NSLayoutConstraint.deactivate(compactConstraints)
NSLayoutConstraint.activate(regularConstraints)
socialMediaView.axis = .horizontal
} else {
NSLayoutConstraint.deactivate(regularConstraints)
NSLayoutConstraint.activate(compactConstraints)
socialMediaView.axis = .vertical
}
}
尝试并分享结果。