繁体   English   中英

旋转UIView; 如何防止旋转过程中发生削波?

[英]Rotating a UIView; How to prevent clipping during rotation?

假设我有一个UIView ,它的标准配置跨越了容器的整个宽度和高度。 就此问题而言,假设其尺寸为320x400。 假设此视图包含的内容可能(通常是)大于其标准尺寸(因此它会滚动浏览内容)。

现在,如果此UIView具有UIRotationGestureRecognizer关联的UIRotationGestureRecognizer ,该UIRotationGestureRecognizer用于通过其transform属性旋转视图,那么如何确保其帧大小/可绘制区域始终对于其当前方向足够大(“足够大”,我的意思是呈现的内容应始终扩展到原始范围,并且在到达原始范围的边缘之前不被剪切)? 例如,如果我将其旋转90度,则视图需要了解其“宽度”现在最多可能消耗400像素,而其高度则限制为320像素。

请注意,我不想在旋转操作中缩放视图。 由于当前旋转而变得可用的任何“附加”空间都应用于显示其他内容(如果有),而不是简单地以更高的缩放级别显示相同的内容。

您不希望在旋转时出现任何空白。 解决方案是使子视图包含一个背景,该背景的大小足以在旋转期间覆盖整个视口。 我说应该是400 x 400的视图。 该视图可以是contentview的父视图,但这会给您带来一些定位上的麻烦。

比较容易的是在当前视图上添加一个子视图。 将(大)背景放在此子视图上,确保此视图在视图堆栈的底部,并在当前视图上放置clipsToBounds = NO。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM