如何在IOS中添加,旋转和拖动线?

时间:2013-02-15 16:37:52

标签: ios objective-c cocoa-touch

实现这一目标的最佳方法是什么?让我们说我有一个方法(未定义),允许在屏幕上绘制具有固定大小和颜色的线。然后,该线需要接受旋转手势和平移手势才能在屏幕上移动。它不会调整大小,只需要旋转和翻译。

解决这个问题的最佳方式是什么?应该是子视图还是子视图到父视图?在ios中绘制线条的方法是什么?如何处理屏幕上的多行?我只是想让某人带领我走向ios图形丛林中的正确道路。

2 个答案:

答案 0 :(得分:2)

首先,您需要考虑整个绘图的复杂程度。从您的描述中可以看出,任务相对简单。如果是这种情况,那么核心图形将是最佳选择。如果绘图要复杂得多,你应该看看OpenGL ES和GLKit,尽管使用OGL需要更多的工作

假设Core Graphics,我会存储线的中心点,角度和长度,并使用手势识别器更改角度和大小,并使用基本trig计算要绘制的点。循环点以在视图-drawRect方法中绘制并使用适当的CG函数绘制每个点 - 调用[view setNeedsDisplay][view setNeedsDisplayInRect:areaToRedraw]以触发重绘。 (第二种方法只重绘您指定的视图部分,并可用于提高性能)。

关于Core Graphics的一系列教程中的第一篇是here .-关于'绘制线'的部分将是最相关的。我没有做过这个(我使用了the old editionthis book),但是我跟踪了很多其他网站,发现它们非常有帮助

作为旁注,如果屏幕上有多个线,您可能需要一种专注于特定线的方法 - 一种简单的方法是找到最接近用户触摸点的线中心点。 / p>

答案 1 :(得分: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