iOS:仅将仿射变换应用于子视图

Posted

技术标签:

【中文标题】iOS:仅将仿射变换应用于子视图【英文标题】:iOS : apply affine transform to subview only 【发布时间】:2013-02-13 10:11:48 【问题描述】:

我有一个带有一个背景图像的视图父级,它缩放到整个父级视图。同样在 view-parent 我需要显示一些其他视图。所以当我对图像应用旋转时:

[self.backgroundView setTransform:CGAffineTransformMakeRotation((CGFloat) M_PI)]; 

它会旋转整个父视图 - 所以其他子视图也会旋转 180 度

那么,我怎样才能只对背景视图应用旋转而不影响其他视图呢?

【问题讨论】:

尝试把背景视图和里面的视图分开,这样当你旋转背景时,其他视图就不受影响了 不幸的是,这个方案对我来说并不可取,如果没有其他办法,我可能会改变一些以前的架构设计方案 还有另一种方式,但不是首选,当您旋转背景视图时,您可以以相同的速度和相反的方向旋转子视图,它看起来就像它不动。这是一个虚拟的解决方案,但可以工作 【参考方案1】:

听起来你的 backgroundView 有子视图,显然会用父视图进行转换,这是设计使然。您需要做的是让您的其他视图成为您的背景视图的兄弟。确保将子视图添加到 backgroundView 的超级视图,而不是 backgroundView 本身。

【讨论】:

其实我做错了,但错误不在这里。感谢您的回复-我更仔细地检查所有并找到解决方案...

以上是关于iOS:仅将仿射变换应用于子视图的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL基础仿射变换原理解析

是否可以旋转/仿射变换 UIMenuController

OpenCV图像变换(仿射变换与透视变换)

CGAffineTransform-仿射矩阵的变换

一文搞懂仿射变换

【转】仿射变换及其变换矩阵的理解