繁体   English   中英

iOS统一比例子视图与superview

[英]iOS Uniform scale subviews with superview

我有一个应用程序,允许用户以多个方向将视图拖动到屏幕上。 所以,让我说我是在纵向模式,我的超级视图是768x1024。 让我们说我将10​​个不同的项目拖到超级视图上。 这些项目是缩放,旋转等。然后我旋转设备,我的超级视图缩小到576x768。 如何让我的所有子视图保持其位置并相对于新的较小尺寸进行转换? 所以从本质上讲,我的超级视图及其所有子视图应该看起来与他们在肖像中所做的完全一样,除了所有内容都按比例缩小。

而且,如果我在景观和一切都“缩小”下来然后我拖动另一个视图并缩小它以适应好。 当设备旋转回肖像时,我需要新视图在适当的位置和大小放大

这里最简单的方法是使用视图的transform属性。 在这种情况下,您将阻止视图在旋转时自动调整大小,并使用类似视图控制器的willAnimateRotationToInterfaceOrientation:duration:方法在willAnimateRotationToInterfaceOrientation:duration:上设置变换。 您可以使用CGAffineTransformMakeScale创建一个可以放大或缩小所有内容的转换; 你可能想要一个用于风景,只需使用nil变换用于肖像(反之亦然)。

这会将新视图拖动到您的超级视图中变得复杂,因为它已被转换,但是一旦您获得了视图,它们在调整大小时应该正常运行。 对于新视图,您必须计算(可能使用convertRect:fromView:UIView的方法)一旦添加新的子视图,rect将是什么。

您还可以直接覆盖视图的layoutSubviews() ,并根据视图的尺寸分配子视图的变换。 通过这种方式,您可以在不使用自动布局的情况下手动自定义子视图的框架和/或变换,从而获得在视图和其他同级UI项目中使用自动布局的好处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM