假设我有一个 UIView
,在其标准配置中跨越其容器的整个宽度和高度。出于此问题的目的,假设其尺寸为 320x400。假设此 View 包含的内容可能(并且通常)大于其标准尺寸(因此它会滚动浏览内容)。
现在,如果此 UIView
有一个与之关联的 UIRotationGestureRecognizer
,用于使用其 transform
属性旋转 View ,我如何确保它的帧大小/可绘制区域对于它的当前方向总是足够大(“足够大”我的意思是渲染的内容应该总是延伸到原始边界,并且在到达原始边界的边缘之前不会被剪裁) ?例如,如果我将它旋转 90 度, View 需要了解它的“宽度”现在最多可以占用 400 像素,而它的高度被限制为 320 像素。
请注意,我不想将缩放 View 作为旋转操作的一部分。由于当前旋转而变得可用的任何“附加”空间都应该用于显示附加内容(如果可用),而不是简单地以更高的缩放级别显示相同的内容。
最佳答案
您不希望旋转时出现任何空白区域。解决方案是有一个包含背景的 subview ,该背景足够大以在旋转期间覆盖整个视口(viewport)。我会说 400 x 400 的 View 应该可以。此 View 可以是您的内容 View 的父 View ,但这会给您带来一些定位麻烦。
在当前 View 上添加一个 subview 更容易。将(大)背景放在此 subview 上,确保此 View 位于 View 堆栈的底部,并在当前 View 上放置 clipsToBounds=NO。
请注意,禁用裁剪会对性能产生影响,尤其是当您的 View 层次结构变得复杂时。
关于ios - 旋转 UIView;如何防止旋转过程中的剪裁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8629899/