2011-11-03 127 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){ 
//... 
}