【发布时间】:2025-12-07 20:35:02
【问题描述】:
我有 4 个简单的视图,我想在 iPhone 上以垂直 4x1(如果水平紧凑)或水平 2x2(如果采用任何其他组合)布局。我还将 wC+vC 添加为水平 2x2,因为 iPhone 横向是 wC+vC。
我的界面构建器布局如下所示:
当在助手中以横向和纵向显示 iPhone 4s 的预览时,我得到了我所期望的:
但是!当我将模拟器用于任何 iPhone 并将其放入横向时,我会得到:
无论我如何尝试,我都无法将 TopStack 和 BottomStack 都显示为水平。如果我删除底部堆栈,顶部变为水平。但是一旦底部堆栈开始发挥作用,顶部堆栈就不会响应。
我什至在 wC+vC 的代码中尝试过这个:
-(void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection {
if( self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact && self.traitCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact ) {
[self.TopStack setAxis:UILayoutConstraintAxisHorizontal];
[self.BottomStack setAxis:UILayoutConstraintAxisHorizontal];
} else {
[self.TopStack setAxis:UILayoutConstraintAxisVertical];
[self.BottomStack setAxis:UILayoutConstraintAxisVertical];
}
}
调试时,我可以验证顶部堆栈实际上在UILayoutConstraintAxisHorizontal 中,但没有正确显示。
有人知道出了什么问题吗??
【问题讨论】:
-
它在设备上是否正常工作?
-
它在设备上的功能与模拟器相同。在最新的 iphone 6 上测试
-
只是为了确认这是一个通用应用程序,而不仅仅是 iPhone?
-
正确,我尝试了universal和iphone,没关系
-
是的,我想知道这是否是 IB 中的错误。我尝试对其进行硬编码,并确认堆栈视图中的状态更改并且它没有更新显示。
标签: ios objective-c size-classes