2012-06-13 167 views
0

我試圖實現一種方法,繪製一個基於手勢識別的行,但我無法獲得UIBezierPath顯示。我知道手勢識別器正在運行,因爲每次激活該方法時都會打印記錄。同樣讓我困惑的是,我之前繪製的藍線試圖繪製貝塞爾路徑,但貝塞爾路徑卻沒有。即使我手動添加任意點沒有被繪製,比如:UIBezierPath沒有繪製

[myPath addLineToPoint:CGPointMake(50, 50)]; 

這裏是我的UIView代碼:

- (void)drawRect:(CGRect)rect 
{ 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGContextSetRGBStrokeColor(ctx, 0, 0, 1.0, 1); 
CGContextMoveToPoint(ctx, 0, 150); 
CGContextAddLineToPoint(ctx, 480, 150); 
CGContextStrokePath(ctx); 

[myPath addLineToPoint:CGPointMake(50, 50)]; 
[myPath stroke]; 
} 

- (IBAction)handlePan:(UIPanGestureRecognizer *) recognizers { 

CGPoint translation = [recognizers translationInView:self]; 
NSLog(@"Logged"); 

[myPath addLineToPoint:CGPointMake(translation.x, translation.y)]; 
[self setNeedsDisplay]; 
} 

感謝您的幫助!

+0

你爲什麼要畫與CG和一些與NSBezierPath一些路徑之前調用移動到mypath中呢? myPath定義在哪裏?請包括它的定義,以便我們看看它在做什麼。 – user1118321

+0

謝謝你的迴應!對不起,遺漏了初始值設定項。在 - (id)initWithFrame:(CGRect)框架中,我初始化爲: 'myPath = [[UIBezierPath alloc] init]; [myPath moveToPoint:CGPointMake(0,0)];' – JShaev

回答

0

你在哪裏初始化myPath?確保它已初始化。

就如同

CGContextMoveToPoint(ctx, 0, 150); 

,你需要添加行

[myPath moveToPoint:CGPointMake(0,150)]; 
[myPath addLineToPoint:CGPointMake(50, 50)]; 
+0

感謝您的回覆!對不起,遺漏了初始值設定項。在 - (id)initWithFrame:(CGRect)框架中,我初始化並調用moveToPoint,如下所示: 'myPath = [[UIBezierPath alloc] init]; [myPath moveToPoint:CGPointMake(0,0)];' – JShaev

+0

@JShaev我測試了代碼,它通過任意點繪製一條線就好了。你確定initWithFrame:被調用嗎?在drawRect:中放置一個斷點並在myPath上進行斷言。 – MadhavanRP