防止子视图在其超级视图变换时转换
问题描述:
我有以下设置。我有一个叫做parentView
的UIView
,它拥有一个叫做childView
的UIView
。 parentView
可以使用一些需要在parentView
上的触摸手势进行旋转和调整大小。 childView
在drawRect方法中有一些绘图代码,在parentView
被转换时需要更新。防止子视图在其超级视图变换时转换
我注意到当我转换parentView
(缩放或旋转)时,childView
也会自动转换。问题在于,虽然我确实希望在childView
上启动旋转变换,但我不希望它变大,我宁愿执行它的绘图代码。
所以我的问题是,处理这种情况的好方法是什么?我注意到,在parentView
转换后,我在childView
上调用“setNeedsDisplay
”时,它不会被执行。
答
我必须将旋转应用于parentView
,然后设置parentView
和childView
的边界属性来调整它的大小。然后,我能够成功地重绘drawRect
中的childView
。底线是,虽然我认为如果你对孩子的超级观点进行了改造,我认为你不得不在它的子视图中使用它。我试图单独设置转换,并且转换的所有时间都被搞砸了。布伦特的上述情况在某些情况下也可能派上用场。
答
不要变换父视图;转换孩子观点的同胞。
换句话说,您的当前设置如下:
transformedView
childView
相反,这样做:
parentView
transformedView
childView
这样的转变会不会影响孩子。
这是一个好主意,但在我的情况下,它涉及到父视图和所有子视图之间的旋转,所以在完成之后,如果我尝试为任何子视图设置新变换,它会变得混乱。 – 2013-03-25 23:25:18
但是,如果我想实现像旋转小木屋一样的旋转但仍保持垂直直线的东西? – Mrug 2017-08-03 08:00:06