我试图在我的单元测试中测试一些特定于大小类的特征,但遇到了一个问题,即大小类未在awakeFromNib中正确设置。当我运行该应用程序时,在屏幕上显示所有内容后,通过在LLDB中检查它来正确设置它,但我似乎永远无法在进行单元测试时触发设置的大小类。有没有人知道何时设置特征收集/如何触发它?编辑:为清楚起见,这些单元测试只测试View,而不是它所在的ViewController。所以我从它的nib加载View,然后对其执行测试。我试过调用layoutSubviews()希望这会触发某种尺寸等级设置,但它没有用。当我在traitCollectionDidChange中放置断点时,堆栈跟踪中
我的opensourcelibrary需要能够调用UIApplication.shared.preferredContentSizeCategory。但是UIApplication.shared在扩展中不可用。构建错误表明我找到了一种基于ViewController的方法来解决我的问题,但我正在编写一个库,所以我无权访问任何ViewController。有没有办法获取扩展的RootViewController,或者有办法获取最外层的UITraitEnvironment?我支持iOS9+,但如果可能的话,此功能可能是10+。 最佳答案
我找到了this问题,我已经尝试实现已给出的解决方案。但是我遇到了一个问题。我的初始ViewController有两个容器View,它们都有自己的ViewController。我创建了一个分配给初始ViewController的RootViewController。此类中的代码如下所示。classRootViewController:UIViewController{varwillTransitionToPortrait:Bool!vartraitCollection_CompactRegular:UITraitCollection!vartraitCollection_AnyAny:
我正在构建我的自定义UIControl,一个构建为IBDesignable的自定义按钮,它需要根据显示它的尺寸类别进行更改。我有一个方法-setupForTraitCollection,它看起来像这样:funcsetupForTraitCollection(){switch(traitCollection.horizontalSizeClass,traitCollection.verticalSizeClass){case(.Regular,_)://iPad-notcompresseddesigncompressed=falsedefault://iPhone-compressedd
我试图找出如何以编程方式使用UITraitCollection,但我发现很难理解它。我正在为iOS8中的iPadRetina开发。println(self.traitCollection)返回以下输出:这很简单。但是当我旋转屏幕时,我得到了完全相同的输出。即,相同的垂直尺寸等级和相同的水平尺寸等级。所以我的问题是,我是否需要为每个设备方向指定我想要的尺寸等级(据我所知,尺寸等级是只读属性!)还是我遗漏了一些明显的东西?在WWDC2014视频网站的“Cocoa-Touch的新功能”演讲中给出的示例中,他以iPhone为例,每个设备方向都有不同的垂直/水平尺寸类别。你会怎么做?
我在UITableView中使用自动布局和大小类,单元格根据内容自动调整大小。为此,我使用的方法是,对于每种类型的单元格,您都保留该单元格的屏幕外实例,并在其上使用systemLayoutSizeFittingSize来确定正确的行高-此方法在thisStackOverflowpost中有精彩的解释和elsewhere。在我开始使用尺寸等级之前,这一直很有效。具体来说,我在RegularWidth布局中为文本的边距约束定义了不同的常量,因此在iPad上文本周围有更多的空白。这给了我以下结果。似乎新的一组约束得到了遵守(有更多的空白),但是行高计算仍然返回与未应用特定大小类约束的单元格相
我在UITableView中使用自动布局和大小类,单元格根据内容自动调整大小。为此,我使用的方法是,对于每种类型的单元格,您都保留该单元格的屏幕外实例,并在其上使用systemLayoutSizeFittingSize来确定正确的行高-此方法在thisStackOverflowpost中有精彩的解释和elsewhere。在我开始使用尺寸等级之前,这一直很有效。具体来说,我在RegularWidth布局中为文本的边距约束定义了不同的常量,因此在iPad上文本周围有更多的空白。这给了我以下结果。似乎新的一组约束得到了遵守(有更多的空白),但是行高计算仍然返回与未应用特定大小类约束的单元格相
iOS8引入了可在Storyboard和Xibs中使用的新屏幕类型,我可以在代码中检测到这些类型吗?如果是,如何?在这里您可以找到更多相关信息https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html 最佳答案 是的,你可以,UIViewControllers现在有一个traitCollection属性,它包含从设备惯用语到当前大小类等等的信息......此外,你可以实现方法functraitCol
iOS8引入了可在Storyboard和Xibs中使用的新屏幕类型,我可以在代码中检测到这些类型吗?如果是,如何?在这里您可以找到更多相关信息https://developer.apple.com/library/content/releasenotes/General/WhatsNewIniOS/Articles/iOS8.html 最佳答案 是的,你可以,UIViewControllers现在有一个traitCollection属性,它包含从设备惯用语到当前大小类等等的信息......此外,你可以实现方法functraitCol
我正在使用UISplitViewController设计一个iPad应用程序.我已经配置了UISplitViewController这样主视图Controller(即左侧较细的View)始终通过splitViewController.preferredDisplayMode=.AllVisible可见。.详细ViewController是一个UICollectionView我想根据iPad是纵向还是横向来更改它的显示方式。如果它是纵向的,我会让CollectionView只显示一个列(类似于UITableView)。如果它是横向的,有更多可用的水平屏幕空间,那么我将显示多列。我认为我可