2011-11-03 62 views
-1

我想重复一次又一次的图像。但是当我运行我的代码时,它崩溃了警告“MainViewController可能不会响应setneedsDisplay”并且“uiviewController可能不响应initwithFrame”。这是我的代码。setneedsdisplay do not draw

#import "MainViewController.h" 


@implementation MainViewController 
@synthesize car,road; 

UIImage *currentImage; 

int tileOffset=0; 

    -(void)awakeFromNib{ 
[[UIApplication sharedApplication]setStatusBarHidden:YES withAnimation:NO]; 
[car setAlpha:0]; 
[road setAlpha:0]; 
currentImage=[UIImage imageNamed:@"Road3.png"]; 


[NSTimer scheduledTimerWithTimeInterval:(.1) target:self selector:@selector(onTimer) 
          userInfo:nil repeats:YES]; 

[NSTimer scheduledTimerWithTimeInterval:(.01) target:self selector:@selector(onTimerRoad) userInfo:nil repeats:YES]; 

} 

-(void)onTimerRoad{ 
tileOffset+=1; 
[self setNeedsDisplay]; //here Get the warning 
} 
-(void)onTimer{ 
[self update1]; 

} 

-(void)update1{ 

[self updateRoad]; 
} 
-(void)updateRoad{ 
[self randomRoadUpdate]; 
} 

-(void)randomRoadUpdate{ 

CGPoint oldPosition=road.center; 
road.center=CGPointMake(oldPosition.x, oldPosition.y+1); 

    } 

-(id)initWithFrame:(CGRect)frame{ 
if(self=[super initWithFrame:frame]){//here get warning 
} 


return self; 
} 

    -(void)drawRect:(CGRect)rect{ 

CGImageRef image=CGImageRetain(currentImage.CGImage); 
CGRect imageRect; 

imageRect.origin=CGPointMake(160, 240); 
imageRect.size=CGSizeMake(320, 480); 

CGContextRef uicontext=UIGraphicsGetCurrentContext(); 

CGContextClipToRect(uicontext, CGRectMake(0, 0, rect.size.width, rect.size.height)); 
CGContextDrawTiledImage(uicontext, imageRect, image); 

    } 

在此先感谢..

+0

你正在将UIViewController与UIView混淆。 – jrturton

回答

1

setNeedDisplays是UIView的方法....所以,你需要调用[self.view setNeedDisplay]第二个警告是关于你的赋值语句,试试这个把它弄出来:

self = [super initWithFrame:frame]; 

if(self){ 
//... 
}