模拟指标有什么影响?

使用.xib文件时,对代码/应用程序的改变会对模拟指标有什么影响? 还是只是为了您的利益作为预览工具?

模拟度量标准主要是帮助您devise界面的devise辅助工具。 它们对.xib *没有直接的影响[1]。 他们是非常有用的,因为你可以模拟你的视图控制器embedded在导航控制器,这样可以减less空间,因为导航栏占用一些空间。 如果你正在布置一个只能用于横向的viewController,它们也非常方便。 当他们介绍时,这是唯一的方法来检查你的界面将看起来在较短的iPhone 4显示器和较高的iPhone 5显示器* [2]。

我经常将尺寸设置为iPhone 4英寸,因为:1)我发现工作在viewController的分散注意力,2)它占用更less的屏幕空间,让我看到我的笔记本电脑显示屏上更多的故事板。 这种方法的危险性要小得多,因为后者实际上会影响对不同大小的设备使用哪些约束。


[1] 尺寸方向度量将影响viewController的大小,因为它存储在.storyboard.storyboard文件中。 如果您将设置保留为“ 推断” ,则Xcode将使用600 x 600作为viewController的大小。 通常情况下,这并没有什么区别,因为viewController在装载时会根据设备大小而定。

[2]当时Simulated Metrics被引入,这是testingiPhone 4s的devise与新的更高的iPhone 5的方式。苹果公司已经介绍了其他更好的方式来检查各种大小的设备devise。

那么实际上改变Simulated Metrics的确会以一种非常狡猾的方式影响你的应用程序。 我发现,使用SwipeView库时,我的幻灯片都受到更改模拟度量标准大小的影响。

在改变大小的引擎盖下设置nib文件的矩形值如下:

 <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> 

这个价值就是笔尖的尺寸。 如果我们尝试在视图中测量元素,那么会出现载入和查看,我们将有错误的信息:

 // viewDidLoad (lldb) po splashImageView <UIImageView: 0x79913eb0; frame = (0 0; 600 600); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x799ca310>> // viewWillAppear (lldb) po splashImageView <UIImageView: 0x79913eb0; frame = (0 0; 600 600); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x799ca310>> 

一旦布局子视图完成,我们确实有适当的大小,但就SwipeView而言,已经太迟了,它已经计算出了一切的位置。

 // viewDidLayoutSubviews (lldb) po splashImageView <UIImageView: 0x79913eb0; frame = (0 0; 768 1024); autoresize = RM+BM; userInteractionEnabled = NO; layer = <CALayer: 0x799ca310>> 

如果任何人都可以提供更多的信息,我真的很喜欢它。

观看WWDC 2015 Session 407在Interface Builder中实现UIdevise ,他们谈到了模拟度量

在这里输入图像说明

推断

现在,他们都在推断。 推断基本上就是指使用我周围的环境。 我们知道我们在一个标签栏控制器内,我们知道我们在一个导航控制器,所以界面生成器知道哪个栏显示。

模拟指标

所有这些指标在运行时都不会影响您的实际应用程序,只有一个例外,那就是大小模拟指标。

大小模拟指标实际上会改变你的视图控制器的大小,但通常你会把它放到一个视图控制器层次结构,它将调整它的大小,但它也有帮助,如果你正在创build自由forms的视图控制器,设置你自己的大小。