旋转UIView;如何在旋转过程中防止剪裁?

时间:2011-12-25 13:54:01

标签: ios uiview rotation transform

所以,让我说我有一个UIView,它的标准配置跨越了容器的整个宽度和高度。出于这个问题的目的,让我们说它的尺寸是320x400。假设此视图包含的内容可能(通常是)大于其标准维度(因此它会滚动内容)。

现在,如果此UIViewUIRotationGestureRecognizer关联,并使用其transform属性旋转视图,我该如何确保其框架大小/可绘制区域始终为它的当前方向足够大("足够大"我的意思是渲染的内容应该始终延伸到原始边界,而不是在到达原始边界的边缘之前被剪裁)?例如,如果我将它旋转90度,视图需要理解它的宽度"现在可能消耗多达400个像素,而其高度限制为320像素。

请注意,我不想将视图缩放为旋转操作的一部分。任何"额外"由于当前旋转而变为可用的空间应该用于显示其他内容(如果可用),而不是仅以更高的缩放级别显示相同的内容。

1 个答案:

答案 0 :(得分:1)

旋转时不希望出现任何空格。解决方案是使子视图包含足够大的背景,以便在旋转期间覆盖整个视口。我会说400到400的视图应该这样做。此视图可以是您的内容视图的父级,但这会给您带来一些定位麻烦。

更容易在当前视图中添加子视图。将(大)背景放在此子视图上,确保此视图位于视图堆栈的底部,并在当前视图中将clipsToBounds = NO。

请注意,禁用剪辑可能会对性能产生影响,尤其是在视图层次结构变得复杂的情况下。