模拟指标有什么影响?
使用.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的视图控制器,设置你自己的大小。