ios以编程方式重绘平铺的嵌套视图

时间:2012-12-12 11:16:15

标签: ios

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

例如,假设您有一个平铺四十个矩形视图的视图,Id喜欢旋转iphone / ipad并且四十个嵌套视图也旋转(不是很难)但更重要的是调整大小和移动。四乘十格可能会变为五乘八。

我能够以编程方式实现此功能,但我发现x / y界限等都是不合适的。

请不要评论“但只是使用故事板”......

谢谢!

1 个答案:

答案 0 :(得分:2)

我发现通常可能需要付出一些努力才能让它像你期望的那样工作。需要考虑的是你用来获取轮换的回调,有3个并且它们的用途略有不同

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

这可能是你想要使用的那个,此时当你查询self.view.frame(或者你用来获取超帧的任何东西)时,它将返回框架将一旦轮换完成。它还考虑了自动调整大小,它会在旋转发生之前为您提供(即尚无可见效果)。使用它来计算视图的所有新位置和大小并进行设置。

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

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

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

一旦旋转完成就会调用它,它会返回新的大小和帧,但是如果你试图在这里重新定位视图,它们看起来就好像它们在旋转完成后跳来跳去。

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

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