xcode - 如何防止安全区域根据图像视图调整大小?
问题描述
在 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 图片,然后是显示模拟器如何渲染事物的图片。
当我使用小于模拟器设备尺寸的图像时,我得到这个:
尽管您看不到,但安全区域的尺寸为 {{0, 0}, {320, 480}},与 PNG 的大小完全相同。
当我使用比 Simulator 设备的尺寸大得多的图像版本时,我得到:
再次,安全区域的尺寸正好是 PNG 的大小,在本例中为 {{0, 0}, {2133, 2789}},即使那里的主视图有 {{0, 0}, {375, 812}}
解决方案
推荐阅读
- c - 具有随机数的动态数组
- java - Docker无法访问jar文件
- hibernate - 如何在 Query DSL 4 上使用来自 JPA 2.1 的 loadgraph 和 fetchgraph
- angular - 如何使用 WebStorm 在 >>one<< click 中调试 Angular 应用程序?
- android - aws pinpoint推送通知单击不起作用
- microsoft-graph-api - 无法获取 WAC 访问令牌
- sql - 使用 laravel 雄辩更新的 sql isnull 更新
- ubuntu - 在 Ubuntu 18.04 上禁用触摸板(暂时)
- java - 如何使用数组创建有组织的组?
- android - 导航到下一个片段时如何更改图像?