我已經完成了翻譯背景screen.view.m文件,但幀速率非常慢。我改變了不同的值的時間間隔,但在Iphone設備中圖像翻譯非常緩慢?任何解決方案嗎?NStimer設備緩慢?
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
// Initialization code
x =0;
xx = 0;
yy = 0;
secX = 0;
[NSTimer scheduledTimerWithTimeInterval:(0.1/60) target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
return self;
}
-(void) onTimer
{
xx++;
xx = (xx % 320);
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect {
// Drawing code
[[UIImage imageNamed:@"graphic.png"] drawAtPoint:CGPointMake(yy,xx)];
if(xx >= 0)
{
[[UIImage imageNamed:@"graphic.png"] drawAtPoint:CGPointMake((-320 - (-1 * xx)),yy)];
}
但我想繪製DrawRect方法出於某種原因... 爲什麼NSTimer不支持它? – 2010-01-21 12:51:11
即便如此,您仍然在每幀都創建一個UIImage,它可能有助於將UIImage存儲爲屬性並在init方法中創建它。你有什麼理由不能用上面的解決方案修復drawInRect方法? – deanWombourne 2010-01-21 13:32:22
如果您仍然想使用-drawRect:開始佈置您的內容,那很好。您仍然希望使用Core Animation將自定義內容移動到視圖中。您甚至可能需要重新考慮計時器的使用,而只需創建一個包含您希望圖像傳播的路徑的開始點和結束點的動畫。重新繪製視圖或圖層內的內容是一項昂貴的操作,應儘可能避免。核心動畫完全是硬件加速的。 – 2010-01-21 18:39:32