21

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

4

3 回答 3

15

实际上,更改模拟指标确实会以一种非常隐秘的方式影响您的应用程序。我在使用 SwipeView 库时发现了这一点,并且我的幻灯片都受到了更改模拟度量大小的影响。

在引擎盖下更改该大小会设置 nib 文件的 rect 值,如下所示:

<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>>

如果有人可以提供更多信息,我真的很喜欢。

于 2015-05-21T13:19:09.977 回答
13

模拟指标主要是帮助您布置界面的设计辅助工具。它们对 .xib*[1] 几乎没有直接影响。它们非常有帮助,因为您可以模拟诸如嵌入在导航控制器中的视图控制器之类的东西,因为导航栏占用了一些空间,因此您可以使用更少的空间。如果您要布置仅用于横向的 viewController,它们也非常方便。在推出它们时,这是检查您的界面在较短的 iPhone 4 显示屏和较高的 iPhone 5 显示屏上的外观的唯一方法*[2]。

我经常将Size设置为iPhone 4 英寸,因为:1) 我发现在方形 viewController 中工作会分散注意力,2) 它占用的屏幕空间要少得多,让我可以在笔记本电脑显示屏上看到更多的 Storyboard。与将大小类更改为wC hR相比,这种方法的危险性要小得多,因为后者实际上会影响哪些约束用于不同大小的设备。


[1] SizeOrientation指标将影响 viewController 的大小,因为它存储在.xibor.storyboard文件中。如果您将设置保留为Inferred,Xcode 将600 x 600用作 viewController 的大小。通常,这没有什么区别,因为 viewController 在加载时会根据设备适当调整大小。

[2] 在引入模拟指标时,这是测试 iPhone 4s 与新款更高 iPhone 5 设计的方法。Apple 此后推出了其他更好的方法来检查各种尺寸设备上的设计。

于 2013-04-29T13:54:31.887 回答
6

观看WWDC 2015 Session 407 在 Interface Builder 中实现 UI 设计,他们谈到了 Simulated Metrics

在此处输入图像描述

推断

现在,现在他们都在说推断。推断基本上意味着使用我周围的上下文。我们知道我们在标签栏控制器内,我们知道我们在导航控制器内,因此界面构建器知道要显示哪个栏。

模拟指标

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

大小模拟指标实际上会改变视图控制器的大小,但通常您会将其放入视图控制器层次结构中,该层次结构将调整它的大小,但如果您正在创建自由形式的视图控制器,例如,并且想要设置自己的大小。

于 2015-08-11T18:16:11.473 回答