2014-10-29 50 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

相关问题