首页 > 解决方案 > 如何防止安全区域根据图像视图调整大小?

问题描述

在 Interface Builder 中,我有一个包含 UIImageView 的简单视图,并试图限制图像视图的宽度和高度。我已经通过几种方式添加了约束,但是每当我在模拟器中运行时,图像视图都无法正确显示,但总是采用 PNG 图像的尺寸,其尺寸小于模拟器的设备。图像视图的内容模式是 Scale to Fill。我正在像这样加载xib:

VCMain *vc = [[VCMain alloc] initWithNibName:@"Main" bundle:nil];

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc];
navController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
navControllermodalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:navController animated:YES completion:nil];

我尝试将图像视图约束到超级视图,并将其约束到安全区域,但没有任何变化。无论我选择哪种控制台打印,都显示安全区域始终采用图像视图的尺寸(奇怪的是,它采用了 png 文件的尺寸,即使设置为 Scale to Fill )。

我还测试了分配大于模拟器尺寸(使用 iPhone Xs 顺便说一句)和更小的图像。您可以在下面的图片中看到图像视图不符合约束。

我究竟做错了什么?为什么安全区域符合图像大小?下面是显示设置的 IB 图片,然后是显示模拟器如何渲染事物的图片。

IB中的设置

当我使用小于模拟器设备尺寸的图像时,我得到这个:

尽管您看不到,但安全区域的尺寸为 {{0, 0}, {320, 480}},与 PNG 的大小完全相同。

当我使用比 Simulator 设备的尺寸大得多的图像版本时,我得到:

再次,安全区域的尺寸正好是 PNG 的大小,在本例中为 {{0, 0}, {2133, 2789}},即使那里的主视图有 {{0, 0}, {375, 812}}

标签: xcodeinterface-builderxibios-autolayoutsafearealayoutguide

解决方案


推荐阅读