2011-05-08 31 views
1

我想創建一個條形圖。我已經有了一個圖表組件,我只需要將其調整爲條形圖即可。當觸摸其中一個小節時,數值將以小視圖彈出。創建具有觸摸觀看價值功能的條形圖的好策略?

正如我所見,有幾種不同的策略可以在這裏應用。我想知道的是我應該使用哪種策略?任何這些或許還有其他更好的想法?:

  1. 酒吧是一個UIButton。
  2. Bar是支持觸控的UIImage。
  3. 酒吧是一個UIView。
  4. 酒吧只是繪製圖形,我必須轉碼觸摸的座標,並進行一些計算,以瞭解什麼酒吧被觸摸。我不相信這個策略,但也許有理由重新考慮這一點,你可以爲我提供...

我假設一個UILable是呈現與酒吧相關的數據的方式?

在此先感謝您的建議!

回答

0

以我愚蠢的觀點,寫了很多條形圖(和其他圖表)......#4實際上是性能和我個人偏好的正確選擇。在內存中創建虛擬圖形以將觸摸映射到條形圖並不難,因爲您只是將矩形存儲在數組中並檢查點是否位於該矩形內。

CGRectContainsPoint(CGRect, CGPoint); 

現在,話說回來,如果你想在你的圖表,這是很酷的東西引進的動畫......然後我可以創建幾個UIViews組成的UIView(每個條或木條段),這樣您就可以單獨爲每個小節制作動畫,而無需編寫自己的動畫循環。

只是我的兩分錢。

+0

謝謝!這看起來很平滑。您是否遇到過使用此策略的任何缺點? – Nicsoft 2011-05-09 14:02:55

+0

沒有...很好地工作 – 2011-05-09 14:18:31

0

我的想法是,#2和#3是相同的,因爲你會使用UIImageView顯示圖像。 UIButton是UIView上的一個非常薄的層,它使得事件處理變得簡單,但它可以在視覺上做你不想做的事情(或者你可能會這樣做)。無論哪種方式,我都可以輕鬆地嘗試這些變化。除非您的整體策略推動您朝這個方向發展,否則我無法看到#4的具體原因,就像您可能開始做一些足夠豐富/複雜的繪圖,以至於您創建了太多的視圖。

AFA的彈出式顯示,它真的取決於你的意思是「彈出」。就像它彈出一次,你需要一種方法來消除彈出?

+0

謝謝你的回答。彈出可以看到,直到我碰到另一個酒吧。因此,彈出窗口不應該覆蓋整個屏幕,只是一個小方塊。也許,如果我觸摸「背景」,彈出應該消失。 – Nicsoft 2011-05-09 14:00:41

0

您是否已退房Core Plot?它是一個活躍而強大的圖書館,非常靈活,應該滿足您的所有需求。

+0

謝謝!這是否也具有這樣的功能:當觸摸欄時,它會顯示數據視圖?我已經有了一個圖表組件,我很容易將其添加到條形圖中。所以這只是我想要的方式。 – Nicsoft 2011-05-09 13:58:32