2009-12-11 48 views
1

我正在使用核心圖庫在我的iPhone應用程序上繪製條形圖,並且當我嘗試向圖表添加標籤或其他視圖時出現問題,實際上,我添加的視圖是垂直繪製的反轉like this ........如何反轉變換一個UIView?

的代碼是一樣

UILabel *lbl= [[UILabel alloc] initWithFrame:CGRectMake(250, 90, 70, 25)]; 
    [lbl setBackgroundColor:[UIColor redColor]]; 
    [lbl setText:@"HELLO"]; 
    [self.view addSubview:lbl]; 
    [lbl release]; 

我不敢與核心積庫玩。

那麼,有沒有其他辦法可以做到的事情吧?我應該在添加視圖之前進行轉換嗎?

如果是這樣的解決方案,那麼這將是昂貴的,因爲我要添加多個子視圖。

地希望我的問題是清楚的給大家。

回答

11

嗯,它看起來像核心情節視圖使用CGAffineTransform反轉。您的觀點可能會繼承其超視圖的反轉。 它實際上做的很簡單,

lbl.transform = CGAffineTransformMakeScale(1,-1); 

應該做的伎倆。 如果你必須做很多次也許喜歡的東西把它簡化,

CGAffineTransform verticalFlip = CGAffineTransformMakeScale(1,-1); 
lbl.transform = verticalFlip; 
otherLbl.transform = verticalFlip; 

等等

x軸翻轉會CGAffineTransformMakeScale(-1,1);

+0

大,我做到了喜歡.... lbl.transform = CGAffineTransformTranslate(verticalFlip,0,-300); – 2009-12-11 12:40:56

+3

是的,我們這樣做是爲了匹配的座標系統爲Mac和iPhone之間繪製。如果你想這是更簡單的,我的建議是不是你的UILabel添加到圖表的CPLayerHostingView,而是要創建一個包含圖中的上海華和添加的UILabel了這一點。 – 2009-12-11 15:41:33

6

爲了避免猜測實際實現值你可以嘗試使用CGAffineTransformInvert功能:

lbl.transform = CGAffineTransformInvert(self.view.transform);