0
我有一個場景中使用在iPhone上查看,所謂的testScene,它的工作原理是這樣的:關於更新使用目標C
@interface testScene : myScene {
IBOutlet UIView *subview;
IBOutlet UIView *drawingCanvasView;
IBOutlet UIButton *update;
}
- (void)updateDrawingCanvas: (id) sender;
,當用戶點擊該按鈕,更新,它將運行updateDrawingCanvas方法。 所以,我有一個drawingCanvasView,這給了一個drawingCanvas.h,並且.M,它是這樣的:
#import <UIKit/UIKit.h>
@interface DrawingCanvasView : UIView {
CGImageRef image;
}
-(void)setNeedsDisplayInRect:(CGContextRef)context;
@end
在DrawingCanvasView,我有一個方法的drawRect像這樣:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
CGContextMoveToPoint(context, 0.0f, 0.0f);
CGContextAddLineToPoint(context, 100.0f, 100.0f);
CGContextStrokePath(context);
而且我希望用戶單擊按鈕,並執行這一點,所以我增加了一個新的方法叫做setNeedsDisplayInRect:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor yellowColor].CGColor);
CGContextMoveToPoint(context, 0.0f, 0.0f);
CGContextAddLineToPoint(context, 200.0f, 200.0f);
CGContextStrokePath(context);
但我不能叫,在我updateDrawingCanvas方法,它的工作升ike this:
- (void)updateDrawingCanvas: (id) sender{
NSLog(@"loaded");
[DrawingCanvasView setNeedsDisplayInRect:UIGraphicsGetCurrentContext()];
}
這是我的邏輯/概念嗎?或者我做錯了什麼,thx。
我可以繪製Rect:,但我無法更新視圖......系統會再次調用drawRect,如果我調用\t [DrawingCanvasView setNeedsDisplay];再次? – Tattat 2010-04-05 07:18:50
你是什麼意思的「我可以drawRect:」?你不應該調用'drawRect:'。 – 2010-04-05 07:23:31
所以,我應該盡一切努力繪製drawRect :,但我無法直接調用drawRect:? – Tattat 2010-04-05 07:27:05