2014-11-06 69 views
0

请参阅下面的设置花的截图。花卉图像已从资产目录正确加载,当应用程序在各种模拟器上运行时,将为每个设备分配正确的像素分辨率。我的问题是如何让每个设备上的花朵图像缩放(大小适合)相同? 我已经学会了如何使用约束和帧图像以不同的位置位置,但图像不能准确地磅秤 - 请参阅第一张图 enter image description hereXcode 6 UIImageView无法正确缩放

下面的图片是一个模拟了什么,我希望能够做到(每个设备上正确缩放花图像)

enter image description here

回答

2

从你的模型来看,它看起来像你想要图像填充一半宽度,并保持其正方形的高宽比来确定它的高度。解决这个问题的一种方法是使用AutoLayout创建左侧的UIImageView和正确的占位符(空白)视图。将左视图固定到父视图的左边缘,将右视图固定到右边缘,然后将它们设置为彼此0像素。然后在它们上设置一个相等的宽度约束。最后,控制将图像视图拖放到自身,并且可以选择宽高比 - 并假定在IB中,宽度和高度相同,则它将保持平方。如果你需要,添加一个相等的高度约束将给另一个视图所需要的高度。

enter image description here

enter image description here Placeholder View Constraints

这给你一个左图像认为是50%,与你的模式设置为看点健身或看点填充,它应该给你在你的实体模型的结果。如果您的图像不是正方形,请务必检查您的UIImageView的剪辑子视图以防止出现溢出。

+0

感谢Kleezy。你的例子可行,但对我来说,看起来有点笨拙,有空间持有者的观点。我目前在appStore上有一个应用程序,其中有4个图像在所有设备上都可以正确缩放。用多个storyBoards很容易做到。现在只有一个storyBoard,看起来好像更容易在代码中以编程方式进行(我真的错过了多个storyBoards) – pete 2014-11-06 11:52:05

+0

那么,通过自动布局 - 您需要_something_来填充空间。我假设你的观点不仅仅是那个形象 - 所以也许'占位符'最终不会成为占位符。顺便说一句 - Spacer的意见实际上建议在这里:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/AutolayoutPG/AutoLayoutbyExample/AutoLayoutbyExample.html – kleezy 2014-11-06 23:58:39

0

真正的问题是,你的目标是不明确的。按比例缩小什么?屏幕有一个高度和宽度。您无法对两者进行缩放,因为这会扭曲图像(因为不同的设备具有不同的总体宽高比)。因此,您必须选择一个可扩展到的维度。

从你的样机判断,我猜你想要的是相对于高度来缩放。如果是,则给图像视图一个高度约束,该高度约束是其超级视图高度的固定分数。它看起来在你的模型中大概是0.25,但是你必须注意你认为是好的一部分。

现在,如果图像视图的内容模式是Aspect Fit(或Aspect Fill),则图像将随图像视图一起更改其高度,而不会扭曲宽高比。

但是,如果要使图像视图的其他维度(此处为宽度)为高度的固定分数,例如使图像视图的宽高比与宽高比相同图像的比例。原因在于,否则图像可能最终集中在图像视图中,即使图像视图本身不会触摸顶部或左侧。

0
CGFloat screen_width = [[UIScreen mainScreen] bounds].size.width; 
your_imageview.frame = CGRectMake(0, 0, screen_width/2, screen_width/2); 
+0

我已经尝试过,并没有区别。 – pete 2014-11-06 09:54:50