Swift TraitCollectionDidChange对iphone X的行为不同
在本例中,我将根据traitCollection.horizontalSizeClass更改视图的布局 这是我的代码片段Swift TraitCollectionDidChange对iphone X的行为不同,swift,autolayout,landscape-portrait,size-classes,Swift,Autolayout,Landscape Portrait,Size Classes,在本例中,我将根据traitCollection.horizontalSizeClass更改视图的布局 这是我的代码片段 override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { super.traitCollectionDidChange(previousTraitCollection) if traitCollection.horizonta
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轴的堆栈视图都是水平的但在iPhoneX横向模式下,它不会出现,而在Phone7中,它会出现。请查看下面的屏幕截图
查看您的问题和状况,我发现您的状况存在问题。您应该检查垂直大小类而不是水平大小类 检查水平尺寸等级时 纵向:所有iPhone设备都具有紧凑的宽度,因此每次都会转到else条件并正确设置视图 横向:所有iPhone Plus(iPhone 6s Plus、iPhone 7 Plus和iPhone 8 Plus)设备都有固定宽度,而所有其他iPhone(iPhone 6s、6SE、iPhone 7和iPhone 8、iPhone X)设备都有紧凑的宽度,因此对于所有Plus设备,它都可以正常工作,但对于其他设备则不行 肖像画: 对于景观: 更多信息,请阅读官方文件 因此,请将您的代码更新为此
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
}
}
试着分享结果。你的问题是什么?看一看,答案是有帮助的:@BhavinKansagara我已经更新了我的问题,请检查一次,让我知道你想要的任何澄清谢谢是的,问题是if语句,所以我修改了if traitCollection.horizontalSizeClass==.regular | | traitCollection.verticalSizeClass=.compact{//Constraint activate}否则{//Constraint deactivate}仅使用此条件也可以工作:if traitCollection.verticalSizeClass==.regular。因为verticalSizeClass有助于检查所有设备的纵向和横向。规则高度表示纵向,紧凑高度表示横向。