2013-02-15 38 views
0

完成此操作的最佳方法是什麼?比方說,我有一種方法(未定義),可以在屏幕上繪製具有固定大小和顏色的線條。這條線需要接受旋轉手勢和平移手勢才能在屏幕上移動。它不會調整大小,只需要旋轉和翻譯。如何添加,旋轉和拖動IOS中的行?

什麼是要對這個最好的方法?行應該是子視圖還是父視圖的子圖層?什麼是在ios中繪製線的方法?如何處理屏幕上的多行?我只是想讓別人把我引向ios圖形叢林中的正確道路。

回答

2

首先,您需要考慮整個圖形的複雜程度。從你的描述來看,這聽起來像是任務相對簡單。如果是這樣的話,那麼Core Graphics就是要走的路。如果繪圖比較複雜,你應該看看OpenGL ES和GLKit,儘管使用OGL涉及到更多的工作

假設核心圖形,我會存儲線的中心點,角度和長度,以及使用手勢識別器更改角度和大小,並使用基本三角來計算要繪製的點。在視圖中循環繪製-drawRect方法並使用適當的CG函數繪製每個點 - 調用[view setNeedsDisplay][view setNeedsDisplayInRect:areaToRedraw]來觸發重繪。 (第二種方法只重繪您指定視圖的一部分,並可用於提高性能)。

第一了一系列的核芯顯卡教程是here .-上「畫線」的部分將是最相關的。我沒有做過這個(我使用the old editionthis book),但我跟着很多其他人從這個網站,發現他們非常有幫助

作爲一個便箋,你可能需要一種方式來專注於如果您在屏幕上有多個線條,則可以使用特定的線條 - 一種簡單的方法是找到距離用戶觸摸點最近的線條中心點。

1

看來像你想要繪製線條的最佳API是與Core Graphics。把你的UIView的drawRect方法中的代碼:

/* Set the color that we want to use to draw the line */ 
[[UIColor redColor] set]; 
/* Get the current graphics context */ 
CGContextRef currentContext =UIGraphicsGetCurrentContext(); 
/* Set the width for the line */ 
CGContextSetLineWidth(currentContext,5.0f); 
/* Start the line at this point */ 
CGContextMoveToPoint(currentContext,50.0f, 10.0f); 
/* And end it at this point */ 
CGContextAddLineToPoint(currentContext,100.0f, 200.0f); 
/* Use the context's current color to draw the line */ 
CGContextStrokePath(currentContext); 

對於手勢識別,使用UIGestureRecognizers。使用以下方法

- (IBAction)handleRotate:(UIRotationGestureRecognizer *)recognizer 
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer 
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer