我正在使用带有大量图像的IB设计UI,默认设计方向是横向。但是,我需要缩小整个视图以适应纵向模式,缩小到允许的最大宽度,并使用内部图像保持视图的相同宽高比。想象我想要实现的最好方法是想象一些风景照片。将其旋转为纵向时,它会缩小到最大宽度,垂直居中,但保持相同的纵横比。在我的情况下,我想用其所有内部子视图缩小视图。
首先,我在viewWillApppear中手动将视图框大小调整为所需大小,并调用setAutoresizesSubviews来调整其所有内部视图的大小。那些内部视图 - 图像具有“Aspect Fit”并且设置了所有自动调整选项(以填充调整大小的视图上的可用区域)。但是,内部视图会弹出容器:一些图像跳到顶部,文本视图扩展到完整的纵向高度。是否可以设置某种“视图容器”,然后说 - “视图调整大小为X并调整所有但仅限于视图容器内部区域?
答案 0 :(得分:2)
当你在IB中设计时,你必须检查几件事。首先是“视图容器”属性,即包含所有子视图的视图。为了在旋转时正常运行,必须使用正确的IB自动调整属性设置此视图,即正确设置自动调整大小线(弹簧)和边框线(结构)。在您的情况下,您希望您的容器与主视图完全匹配,因此在四个侧面启用“结构”并启用内部的“弹簧”。使用此值播放并查看IB显示的“示例”。
然后,您必须指示此容器正确处理其子视图。因此,请检查IB“自动调整子视图”和内容模式(如果需要)(=“模式”)具有所需设置。 此时,如果视图正在旋转并正确上升,则可以检查设备或模拟器。
然后你必须处理这个视图的内容,这是一个UIImageView。这必须居中,所以删除结构,并自动恢复,所以设置弹簧。然后根据需要将内容模式设置为Aspect Fit或Aspect Fill。
这些设置应该有效。对于更复杂的东西,你必须以编程方式设置东西。