只旋转视图而不旋转其子视图

有没有什么办法可以将视图变换转换为子视图? 我有一个自定义的MKAnnotationView,根据用户的标题值旋转。 在自定义Annotation视图类的下面的方法中,我将一个子视图添加到注释视图。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; if(selected) { [self addSubview:self.myCallOutView]; return; } [self.myCallOutView removeFromSuperview]; } 

但问题是当我的注释视图旋转,然后我select任何注释,myCallOutView也出现旋转,我不想要的。 我正在旋转自定义注释视图使用下面的行

  [self setTransform:CGAffineTransformMakeRotation(angle * M_PI / -180.0)]; 

我怎样才能避免这种情况? 我需要在myCallOutView上应用一些转换,然后将其添加为子视图吗?

一个非常简单的解决scheme是在子视图上执行反向旋转:

 [self setTransform:CGAffineTransformMakeRotation(angle * M_PI / -180.0)]; // NOTE: we're using the negative of the angle here [self.myCallOutView setTransform:CGAffineTransformMakeRotation(- angle * M_PI / -180.0)]]; 

这将取消超视图的旋转效果。

另一种方法:结构化你的看法有点不同:而不是有一个视图内部视图B,有两个视图A和B是一个容器视图的子视图C.然后只是应用你的旋转视图A,B不会受到影响。 为了在显示器上移动整个集合,重新放置容器视图C.