【发布时间】:2018-03-18 14:07:13
【问题描述】:
我有一个通用 iOS 应用程序,并试图从旧式启动图像转移到故事板启动屏幕上的简单居中图像,因此我有一个适用于所有设备的故事板。当应用程序在尺寸大于图像的设备上运行时,我的图像(640x1136,iPhone 5s 尺寸)不需要拉伸——换句话说,UIView 的背景颜色应该出现在较大设备上的图像周围。出于调试目的,我将视图背景颜色更改为艳丽的石灰。
我根据最高投票的答案(Suragch's)按照SO post here 中的指示在 UIImageView 上定义了 2 个约束,实际上还必须遵循已接受答案的建议添加额外的 UIView 以包含我的 UIImageView .
UIImageView 的“内容模式”是Center,所以看起来应该没有拉伸。
在图片中通知 UIImageView 的 Xcode 的 Size Inspector 设置。 UIView 具有 iPhone 7 大小的暗淡 (750x1334),因此由于 iPhone 比我的图像高,因此 UIImageView 的位置使其 X 为 55,Y 为 99。宽度和高度与图像本身相同 (640x1136)。
当我在模拟器中运行时,iPhone 7 看起来应该与 Xcode 的 Interface Builder 显示的完全一样(石灰色出现在图像周围,但是,对于任何大于 iPhone 5s 或 SE 的设备,它看起来像图片我已附上(iPad Air,仅供参考)。您可以看出图像必须垂直拉伸很多,因为图像只有 1136 高。
我附上了 iPhone 7(模拟器)iPad Air 和 iPad Pro 的屏幕截图。请注意,iPad Air 的左右边缘出现了石灰色的水平条纹。请注意,对于 iPad Pro,石灰背景颜色开始显示在图像的上方。就好像在较小的设备上,系统正在拉伸 UIImageView,但随着设备屏幕尺寸的增加,这最终会停止,直到对于最大的设备(Pro),您实际上可以看到周围的背景。似乎对于高于 iPhone 5s 或 SE 的 所有 设备 sizes listed in the Apple docs,应该没有拉伸/扭曲。这就是我想要完成的。
【问题讨论】:
-
如果您想要的视图/图像完全覆盖屏幕(没有石灰绿色),您可以将顶部/底部/左侧/右侧约束设置为 0 到视图
-
我希望我的图像保持未拉伸。只有当图像的尺寸和设备的匹配时,它才应该完全覆盖屏幕。
-
所以你想让(黑色+蓝色的东西?)图像保持一个尺寸,如果图像没有填满整个屏幕,比如在 iPad 上,如果你愿意,可以添加一个额外的“边框”空气?
-
我的意思是看两幅图像之间的比例,它看起来没有被拉伸,你能发布你想要显示的内容吗?你希望图像在更大的屏幕上看起来如何?
-
好吧,我已经发布了我想要展示的内容。看到我提供的两张图片之间的区别了吗?第一个(Xcode 界面生成器)是正确的,只要设备不是 5s 或 SE,就应该显示类似的东西——没有石灰。我非常感谢您的帮助,但我需要/想要的非常清楚。
标签: xcode uiimageview storyboard constraints xcode8