2013-03-23 87 views
1

我有以下设置。我有一个叫做parentViewUIView,它拥有一个叫做childViewUIViewparentView可以使用一些需要在parentView上的触摸手势进行旋转和调整大小。 childView在drawRect方法中有一些绘图代码,在parentView被转换时需要更新。防止子视图在其超级视图变换时转换

我注意到当我转换parentView(缩放或旋转)时,childView也会自动转换。问题在于,虽然我确实希望在childView上启动旋转变换,但我不希望它变大,我宁愿执行它的绘图代码。

所以我的问题是,处理这种情况的好方法是什么?我注意到,在parentView转换后,我在childView上调用“setNeedsDisplay”时,它不会被执行。

回答

1

我必须将旋转应用于parentView,然后设置parentViewchildView的边界属性来调整它的大小。然后,我能够成功地重绘drawRect中的childView。底线是,虽然我认为如果你对孩子的超级观点进行了改造,我认为你不得不在它的子视图中使用它。我试图单独设置转换,并且转换的所有时间都被搞砸了。布伦特的上述情况在某些情况下也可能派上用场。

2

不要变换父视图;转换孩子观点的同胞。

换句话说,您的当前设置如下:

transformedView 
    childView 

相反,这样做:

parentView 
    transformedView 
    childView 

这样的转变会不会影响孩子。

+0

这是一个好主意,但在我的情况下,它涉及到父视图和所有子视图之间的旋转,所以在完成之后,如果我尝试为任何子视图设置新变换,它会变得混乱。 – 2013-03-25 23:25:18

+0

但是,如果我想实现像旋转小木屋一样的旋转但仍保持垂直直线的东西? – Mrug 2017-08-03 08:00:06