ios - 旋转 UIView;如何防止旋转过程中的剪裁?

标签 ios uiview rotation transform

假设我有一个 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/

相关文章:

iOS 应用内购买测试器对话框缺少 Apple ID 输入字段

ios - 由于 API 滥用,CoreBluetooth 正在与未使用的外围设备断开连接

objective-c - 在 MPVolumeView 中检测触摸

ios - 如何执行从 UIView 到 ViewController 的导航

iphone - 在应用程序购买中:应用程序处于事件状态,并且仍显示[环境:沙箱]

ios - 在 iOS 中设置和检索日期以避免时区更改问题

java - Java中的无损JPEG旋转(90/180/270度)?

html - 旋转图像边框

iphone - 如何为 iPhone SDK 应用程序实现 Accordion View ?

html - 将列表项旋转 90 度