2014-10-29 45 views
0

這是我的代碼。這很簡單。我的問題是爲什麼當主線程做其他事情時,動畫仍然存在,文檔說主線程可以更新UI。主線程可以在同一時間做兩件事情?動畫還在,當主線程做其他事情時

可能是GPU使動畫?

- (void)viewDidLoad { 
[super viewDidLoad]; 
UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 80, 50)]; 
testLabel.font = [UIFont systemFontOfSize:15.0f]; 
testLabel.backgroundColor = [UIColor redColor]; 
testLabel.text = @"Hello world"; 
testLabel.adjustsFontSizeToFitWidth = YES; 
[self.view addSubview:testLabel]; 

[UIView animateWithDuration:10 
       animations:^{ 
        testLabel.frame = CGRectMake(100, 200, 80, 50); 
       } completion:^(BOOL finished) { 
        // 
       }]; 
[self performSelector:@selector(hello:) withObject:@"hello" afterDelay:2]; 
} 


- (void)hello:(NSString *)hello{ 
for (int i = 0; i < 100000; i++) { 
    NSInteger j = i *5; 
    NSLog(@"%d",j); 
} 
NSLog(@"%@",hello); 
} 

回答

2

動畫運行在圖形硬件中,它甚至不會打擾CPU。

核心動畫在UIKit之下,所以當你使用animateWithDuration:animations:completion:UIView時,你實際上是在使用Core動畫。

我引用一段在CoreAnimation_guide

核心動畫是一個圖形渲染和動畫的基礎設施 ,您使用動畫的看法和您的應用程序的 其他視覺元素iOS和OS X提供。使用核心動畫,大部分 工作都需要繪製動畫的每一幀。所有 你需要做的是配置一些動畫參數(如 起點和終點),並告訴核心動畫啓動。核心動畫 完成剩下的工作,將大部分實際繪圖工作交給 板載圖形硬件來加速渲染。這種自動 圖形加速導致高幀速率和流暢的動畫 不負擔CPU和減慢您的應用程序。

我認爲這是非常明顯的回答你的問題。

+0

謝謝。這就是答案。「這種自動圖形加速可以實現高幀率和流暢的動畫效果,而不會增加CPU的負擔並降低應用程序的速度。」 – frank 2014-11-03 06:13:15

+0

@frank不客氣。你能接受答案嗎? – KudoCC 2014-11-03 08:27:00

相關問題