如何防止Storyboard调整(拉伸)以UIView为中心的UIImage?

时间:2017-10-06 17:47:26

标签: xcode uiimageview storyboard constraints xcode8

我有一个通用iOS应用程序,我试图从故事板启动屏幕上的旧式启动图像转移到简单居中的图像,所以我有一个故事板适用于所有设备。当应用程序在尺寸大于图像的设备上运行时,我的图像(640x1136,iPhone 5s大小)不需要拉伸 - 换句话说,UIView的背景颜色应该出现在较大设备上的图像周围。出于调试目的,我将视图背景颜色更改为华丽的Lime。

我根据最高评价的答案(Suragch' s)按照SO post here中的指示在UIImageView上定义了2个约束,实际上还必须遵循接受的答案的建议来添加我的UIImageView将包含在其中的附加UIView。

"内容模式" UIImageView是中心所以似乎不应该伸展。

在pic中注意Xcode的UIImageView的大小检查器设置。 UIView有iPhone 7大小的暗淡(750x1334),因为iPhone比我的图像高,UIImageView的位置使其X为55,Y为99.宽度和高度与图像本身相同(640x1136)。

当我在Simulator中运行时,iPhone 7看起来应该与Xcode的界面生成器显示的完全一样(图像周围出现Lime颜色,但对于任何比iPhone 5s或SE更大的设备看起来像我附上的照片(iPad Air,FYI)。你可以看出图像必须垂直拉伸,因为图像只有1136高。

我已经为iPhone 7(模拟器)iPad Air和iPad Pro附上了截图。请注意,iPad Air的左右边缘会出现水平的石灰色条带。请注意,当涉及到iPad Pro时,石灰背景颜色开始显示在上方图像。它似乎在较小的设备上系统正在拉伸UIImageView,但随着设备屏幕尺寸的增加,这最终会停止,直到最大的(Pro),您实际上可以看到周围的背景。似乎对于比iPhone 5s或SE更高的所有设备sizes listed in the Apple docs,应该没有拉伸/失真。这就是我想要完成的事情。

Interface Builder大小设置 Interface Builder size settings iPhone 7(模拟器)截图 iPhone 7 (simulator) screenshot iPad Air(设备)截图 enter image description here iPad Pro(设备)截图 enter image description here

3 个答案:

答案 0 :(得分:2)

我最终能够通过完全消除约束并且仅使用在选择Size Inspector时找到的自动调整设置。 UIImageView现在保留其指定的大小,并且不会被拉伸。

答案 1 :(得分:0)

尝试将宽度/高度约束添加到ImageView

enter image description here

首先选择ImageView,然后选择此项|-☐-|即可完成此操作图标(位于Storyboard窗口的右下角,您可以在其中更改设备类型的选项旁边)

答案 2 :(得分:0)

好的,我想我已经找到了问题所在。您的图片尺寸太大。你说你希望它的大小与iPhone 5相同,而且它的显示大小是1136x640像素。 与Xcode中的宽度/高度相同。要获得此功能,请将设备更改为iPhone 5(或类似设备)并获取大小。例如,iPhone 8的View大小为667x375。那么你的图像就不会被切断。