2012-07-26 30 views
0

我的應用程序的一個方面是繪製餅圖。所以一旦用戶點擊一個按鈕,我啓動一個我創建的pieDrawing類。重繪通過類創建的Rect

mPieClass=[[PieClass alloc]initWithFrame:CGRectMake(10+PosX, 10, 320, 230)]; 

然後我填寫了一些數據,類變量,半徑,顏色值等(和類本身創造一些標籤) ,然後將其添加爲子視圖。

[self.view addSubview:mPieClass]; 

到目前爲止這麼好,餡餅顯示正常。現在由於改變了iPad的方向,我需要重新繪製並放置在不同的位置。

我的問題是我應該怎麼做,目前我只是再次調用繪圖/創建方法,它會在另一個位置繪製另一個餡餅,但我以前的餅仍然顯示。我認爲,如果我打電話

mPieClass=[[PieClass alloc]initWithFrame:CGRectMake(10+PosX, 10, 320, 230)]; 

它會使用PosXand的新值重繪它,但它仍然存在,但舊的餅仍然存在。 我是否需要釋放或清除舊的餅圖?

讓我知道你是否需要更多的細節。 由於

+0

什麼是'PieClass'的一個子類?在重繪和重新添加之前,您可能只需執行'[self.view removeSubview:mPieClass]''。 – Dustin 2012-07-26 18:54:10

+0

@Dustin PieClass是我主視圖的子類,它是我擁有的所有子視圖的父視圖。我最初嘗試你的代碼,我得到一個警告「實例方法-removeSubview未找到(返回類型默認ti ID)」,當我運行代碼它吹SIGABRT – 2012-07-26 19:05:19

+0

我宣佈PieClass * mPieClass;作爲全局\公共變量在頂視圖controller.m代碼.. – 2012-07-26 19:09:33

回答

0

UIView文檔:

定義了 原點和視圖的尺寸座標它的父的系統和佈局 期間通常用於調整大小或位置的看法。

爲了把你的觀點在您指定一個新的幀的新位置:

mPieClass.frame = CGRectMake(newX, newY, newWidth, newHeight); 
+0

你是對的!我在其他UI對象上直接做了這麼多次。因爲什麼原因,我不知道我可以通過班級在框架上做到這一點。謝謝一堆。 – 2012-07-26 19:46:59