【问题标题】:Rotating a UIView; How to prevent clipping during rotation?旋转 UIView;如何防止旋转过程中出现剪裁?
【发布时间】:2012-01-27 15:08:13
【问题描述】:

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

现在如果这个UIView 有一个与之关联的UIRotationGestureRecognizer 用于使用它的transform 属性旋转视图,我如何确保它的帧大小/可绘制区域对于它的当前方向总是足够大(“足够大”是指渲染的内容应该始终延伸到原始边界,而不是在到达原始边界的边缘之前被剪裁)?例如,如果我将它旋转 90 度,视图需要了解它的“宽度”现在可能消耗多达 400 像素,而它的高度被限制为 320 像素。

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

【问题讨论】:

    标签: ios uiview rotation transform


    【解决方案1】:

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

    更简单的方法是在当前视图上添加子视图。将(大)背景放在此子视图上,确保此视图位于视图堆栈的底部,并在当前视图上放置 clipsToBounds=NO。

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

    【讨论】:

      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      • 2014-06-05
      相关资源
      最近更新 更多