2011-09-30 66 views
1

我正在用IB设计带有大量图像的UI,默认的设计方向是横向。但是,我需要缩小整个视图以适应纵向模式,缩小到最大允许宽度并使视图的内部图像保持相同的纵横比。想象我想要达到的最好方式就是想象一些风景照片。当您将其旋转为纵向时,它会缩小到最大宽度,垂直居中,但保持相同的宽高比。就我而言,我想用其所有内部子视图缩小视图。是否可以在界面生成器中为可旋转的bg图像设置自动调整大小?

首先,我手动将视图框的大小调整为viewWillApppear所需的大小,并调用setAutoresizesSubviews来调整其内部视图的大小。这些内部视图 - 图像与“Aspect Fit”以及所有自动调整选项设置(在调整大小的视图中填充可用区域)。但是,内部视图会从容器中弹出:某些图像跳转到顶部,文本视图展开为完全纵向高度。有可能设置某种“视图容器”,然后说 - “查看调整大小到X的大小,并调整所有的,但只有在视图集装箱的区域?”

+0

为什么你不使用两个单独的图像横向和纵向模式..? –

+0

因为如果没有不存在纵横比的变化,保持不同的图像是愚蠢的。 – Centurion

回答

2

当你在IB设计时,你必须检查几件事。所有的“视图容器”属性,即包含所有子视图的视图,为了在旋转时正确运行,必须使用正确的IB Autosizing属性来设置该视图,即使用自动大小线(弹簧)和边框线(结构)在你的情况下,你希望你的容器与主视图完全吻合,所以启用四边的“结构”,并启用里面的“弹簧”,玩这个值,看看显示的“例子” IB

然后,您必须指示此容器正确运行其子视图。因此请检查IB是否“Autoresize subviews”和内容模式(如果需要)(=“Mode”)具有希望的设置。 此时您检查设备或模拟器,如果您的视图正在旋转并正常上升。

然后你必须照顾这个视图的内容,这是一个UIImageView。这必须居中,所以删除结构,并自动修复,以便设置弹簧。然后根据您的意愿将内容模式设置为Aspect Fit或Aspect Fill。

这些设置应该工作。对于更复杂的东西,你必须以编程方式设置东西。

相关问题