2013-03-21 138 views
3

有沒有什麼方法可以將視圖的變換傳遞給子視圖? 我有一個自定義的MKAnnotationView,我根據用戶的標題值旋轉。在下面的自定義Annotation視圖類的方法中,我將一個子視圖添加到註釋視圖。只旋轉視圖而不旋轉其子視圖

- (void)setSelected:(BOOL)selected animated:(BOOL)animated 
{ 
    [super setSelected:selected animated:animated]; 

    if(selected) 
{ 
    [self addSubview:self.myCallOutView]; 
    return; 
} 
    [self.myCallOutView removeFromSuperview]; 


} 

但問題是,當我的標註視圖旋轉,然後我選擇任何註釋,myCallOutView也出現旋轉,我不用想。我旋轉自定義註釋視圖使用以下行

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

我該如何避免這種情況?在將它作爲子視圖添加之前,是否需要在myCallOutView上應用一些轉換?

回答

6

一個非常簡單的解決辦法是在子視圖執行反轉:

[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,有兩種觀點A和B是一個容器視圖下的子視圖然後,只需應用您的旋轉查看A,B贏了不會受到影響。並移動顯示器上的整個集合,重新放置容器視圖C.

+4

是的好我會嘗試它,我認爲它會工作..Btw你需要應用一些變換到你的個人資料圖片..:p – 2013-03-21 11:47:54

+1

人們面臨着同樣的問題,我通過使用occulus上述答案中提到的替代方法解決了這個問題,因爲在子視圖上執行反轉不會旋轉子視圖,但其框架將受到影響。去第二種方法 – 2013-03-22 07:09:19