如何以编程方式添加尺寸类自定义

Posted

技术标签:

【中文标题】如何以编程方式添加尺寸类自定义【英文标题】:How do I add size class customization programmatically 【发布时间】:2015-02-25 17:31:04 【问题描述】:

如何务实地添加尺寸类自定义?我知道如何在界面生成器中执行此操作,但想使用我现有的编程 NSLayoutConstraints 执行此操作。似乎在任何地方都找不到有关此的任何信息,除了一两个地方说可以做到,但没有关于如何做到的信息。

谢谢

【问题讨论】:

【参考方案1】:

从视图中获取特征集合很简单:

self.view.traitCollection

并且UITraitCollection 具有horizo​​ntalSizeClass 和verticalSizeClass 属性,您可以根据需要检查和应用约束。

你还想实现 traitCollectionDidChange: 方法来获取旋转引起的变化

【讨论】:

感谢 kviksilver。这是我一直在寻找的一部分,但我正在寻找一种方法来安装代码中的约束或不安装特定大小的类。在界面生成器中,默认为所有尺寸类安装每个约束。然后,您可以更改它并指定为每个约束安装的大小类。那么,我该如何在代码中做到这一点。如果你的答案是如何,你能进一步解释一下吗?在我看来,您展示了一种确定视图当前尺寸等级的方法,但没有展示如何为每个尺寸等级安装特定约束。 您可以做简单的 if (self.view.traitCollection.horizo​​ntalSizeClass == UIUserInterfaceSizeClassCompact) 并以编程方式为 UIUserInterfaceSizeClassCompact 大小类添加约束。常规也是如此。您在这些检查之外添加的任何约束都对两个大小的 lasses 都有效,您可以阅读更多关于以编程方式添加约束developer.apple.com/library/ios/documentation/UserExperience/… 是的,我了解如何以编程方式添加约束。但是从你所说的来看,我会根据当前的大小类添加约束,然后在调用 'traitCollectionDidChange' 时必须更改它们。在界面生成器中,您可以安装特定尺寸类的约束,然后就是这样。以后不再检查等等。我现在有一个如何针对不同的方向和设备等进行调整的解决方案,但它有点乏味,我想利用界面构建器选项的惊人易用性,而不必在情节提要中重新创建所有约束和视图。跨度> 是的,你是对的,界面生成器使尺寸类变得更容易...... :-) 我能想到的最简单的方法是保留对约束的引用并在旋转更改时对其进行更改......跨度> 是的,我现在就这样做,但我真的不喜欢那样,想利用这个新的很棒的代码。我觉得必须有一种方法......我仍在寻找。感谢您推动正确的方向

以上是关于如何以编程方式添加尺寸类自定义的主要内容,如果未能解决你的问题,请参考以下文章

类自定义排序的 C++ 向量

如何以编程方式使用自动布局添加自定义视图

如何以编程方式在 UITableViewCell 中添加自定义视图?

如何以编程方式快速添加自定义 UIButton

SharePoint:如何以编程方式将项目添加到自定义列表实例

如何以编程方式将自定义 uiview 添加到视图控制器 SWIFT