0

我正在市场上寻找一个很好的完整示例/教程链接或演示,以编程方式创建和重绘/调整具有嵌套平铺视图的视图的旋转大小。这意味着根视图需要在旋转时旋转,并触发所有嵌套视图也旋转和调整大小。

例如,假设您有一个视图,其中包含 40 个平铺的矩形视图,我想旋转 iphone/ipad 并让 40 个嵌套视图也旋转(不难),但更重要的是调整大小和移动。一个四乘十的网格可能会变为五乘八。

我能够以编程方式实现这一点,但我发现 x/y 边界等都偏离了轨道。

请不要对“但只使用故事板”发表评论......

谢谢!

4

1 回答 1

2

我发现要让它按照您的意愿/期望工作通常需要一些努力。要考虑的事情是您用来进行轮换的回调,有 3 个,它们的用途略有不同

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

这可能是您要使用的那个,此时当您查询self.view.frame(或任何用于获取超级帧的内容)时,它将返回旋转完成后该帧的值。它还考虑了自动调整大小,并在旋转发生之前为您提供了这一点(即尚无可见效果)。使用它来计算视图的所有新位置和大小并设置它们。

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration

这告诉您旋转即将发生,但仍返回当前方向的框架,用于隐藏/显示视图,但不适用于计算新位置!

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

一旦旋转完成就会调用它,它会返回新的尺寸和帧,但是如果您尝试在此处重新定位视图,它们看起来就像在旋转完成后它们正在四处跳动。

我还建议使用自动调整大小,因为这可能是一个真正的婊子。我有时会在代码和 xib 中设置自动调整大小,以确保没有有趣的事情!

如果矩形嵌套在视图控制器中,它们应该自动旋转(您可能知道我只是想以防万一)

于 2012-12-12T11:51:22.443 回答