Ios 如何根据大小类安装和卸载UIButton?

Ios 如何根据大小类安装和卸载UIButton?,ios,swift,uibutton,interface-builder,size-classes,Ios,Swift,Uibutton,Interface Builder,Size Classes,我需要在纵向方向安装一个按钮,而在纵向方向(任意宽度、任意高度)卸载另一个按钮,而在横向方向(任意宽度、紧凑高度)安装相反的按钮。其中一个按钮是UIStackView的一部分,另一个按钮是UIView的一部分 在纵向模式下,应安装UIStackView中的按钮,但应卸载UIView中的按钮,与前面在横向模式中提到的相反。目前,我正在我的视图控制器中检查脚本的userInterfaceIdiom,但如果可能的话,我希望完全依赖Interface Builder 当删除我的代码(这实际上使其行为正确

我需要在纵向方向安装一个按钮,而在纵向方向(任意宽度、任意高度)卸载另一个按钮,而在横向方向(任意宽度、紧凑高度)安装相反的按钮。其中一个按钮是
UIStackView
的一部分,另一个按钮是
UIView
的一部分

在纵向模式下,应安装
UIStackView
中的按钮,但应卸载
UIView
中的按钮,与前面在横向模式中提到的相反。目前,我正在我的视图控制器中检查脚本的
userInterfaceIdiom
,但如果可能的话,我希望完全依赖
Interface Builder


当删除我的代码(这实际上使其行为正确)并简单地依靠
界面生成器
根据
大小类
安装/卸载按钮时,为横向方向安装的按钮始终正确布局,但当旋转回纵向时,现在应该安装的另一个按钮完全放错了位置,超出了它原来的
UIStackView
,而它应该保留但没有保留的
UIStackView
现在被扩展,以填补该按钮应该保留的空白。发生这种情况时,日志中没有来自
UIKit
的警告或错误,并且我的故事板没有显示冲突。我完全被难住了

乍一看,这似乎是一个简单的解决方案。只需选中/取消选中UI元素的
大小类
的安装框。尽管如此,即使在阅读了苹果文档和教程之后,这也比我预期的更加困难和模糊

为了澄清,我没有为纵向方向安装的按钮设置约束,因为它位于
UIStackView
中。另一方面,我确实为横向方向按钮设置了一些约束。尽管如此,视图中的按钮是唯一给我带来麻烦的

视图调试器在Xcode 7中也不工作,我收到错误:
警告:无法从dyld共享缓存加载任何Objective-C类信息。这将显著降低可用类型信息的质量。
尝试使用时

我相信这可能是一个bug,与此帖子相关:


非常感谢你的帮助!谢谢。

如果您希望某个组件仅显示在特定的大小类别中,请执行以下操作:

使用希望组件显示的大小类向组件添加约束(纵向中所有iPhone的wCompact hRegular和横向中所有iPhone的wAny hCompact)。接下来,确保在属性检查器中仅勾选了该大小类

勾选Installed将使组件以任何尺寸类别显示。通过单击屏幕中央底部的选项,可以更改情节提要文件中视图控制器的大小类(请参见屏幕底部的蓝色栏,上面的图像中显示wAny hCompact)

我希望这有帮助

更新 确保还为正确的尺寸类别设置了零部件的约束


从文档大纲中选择零部件的约束,并在尺寸检查器中检查约束的尺寸类别。通常,当您向故事板中选择了特定尺寸类别的组件添加约束时,将自动为该尺寸类别添加约束。

如果您希望组件仅显示在特定尺寸类别中,您可以这样做:

使用希望组件显示的大小类向组件添加约束(纵向中所有iPhone的wCompact hRegular和横向中所有iPhone的wAny hCompact)。接下来,确保在属性检查器中仅勾选了该大小类

勾选Installed将使组件以任何尺寸类别显示。通过单击屏幕中央底部的选项,可以更改情节提要文件中视图控制器的大小类(请参见屏幕底部的蓝色栏,上面的图像中显示wAny hCompact)

我希望这有帮助

更新 确保还为正确的尺寸类别设置了零部件的约束


从文档大纲中选择零部件的约束,并在尺寸检查器中检查约束的尺寸类别。通常,当您向故事板中选择了特定尺寸类别的组件添加约束时,将自动为该尺寸类别添加约束。

“发生这种情况时,日志中没有UIKit的警告或错误”但您是否有任何自动布局歧义?你没有得到任何警告,但他们可能会导致这种问题。您必须使用日志/视图调试才能找到答案。@matt感谢您的快速响应!对于基于自动布局的约束和/或我的故事板框架,IB未显示任何警告或歧义。这就是你要问的吗?不,我说的是运行时发生的事情。@matt我在运行时也没有收到这些。有什么建议吗?我想说的是,回到代码中,继续做下去。IB显然不能做你想做的事。没什么大不了的。“当这种情况发生时,日志中没有来自UIKit的警告或错误”,但是您是否有任何自动布局的歧义?你没有得到任何警告,但他们可能会导致这种问题。您必须使用日志/视图调试才能找到答案。@matt感谢您的快速响应!对于基于自动布局的约束和/或我的故事板框架,IB未显示任何警告或歧义。这就是你要问的吗?不,我说的是运行时发生的事情。@matt我没有收到