Ios 当主线程执行其他操作时,动画仍处于打开状态

Ios 当主线程执行其他操作时,动画仍处于打开状态,ios,multithreading,animation,Ios,Multithreading,Animation,这是我的密码。很简单。我的问题是为什么当主线程做其他事情时,动画仍在运行,文档说主线程可以更新ui。主线程可以同时做两件事 可能是GPU制作的动画 - (void)viewDidLoad { [super viewDidLoad]; UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 80, 50)]; testLabel.font = [UIFont systemFontOfSize:15.0f];

这是我的密码。很简单。我的问题是为什么当主线程做其他事情时,动画仍在运行,文档说主线程可以更新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);
}
-(void)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=是;
[self.view addSubview:testLabel];
[ui查看动画持续时间:10
动画:^{
testLabel.frame=CGRectMake(100,200,80,50);
}完成:^(布尔完成){
//
}];
[自执行选择器:@selector(hello:)with object:@“hello”afterDelay:2];
}
-你好:(NSString*)你好{
对于(int i=0;i<100000;i++){
NSInteger j=i*5;
NSLog(@“%d”,j);
}
NSLog(@“%@”,您好);
}

动画是在图形硬件中运行的,它甚至不会影响CPU

核心动画在
UIKit
下,因此当您使用
UIView
animateWithDuration:animations:completion:
时,实际上您正在使用核心动画

我引用以下文件中的一段:

核心动画是图形渲染和动画基础设施 在iOS和OS X上都可用,可用于设置视图动画和 应用程序的其他视觉元素。对于核心动画,大多数 绘制动画的每个帧所需的工作已为您完成。全部的 您需要做的是配置一些动画参数(例如 开始点和结束点),并告诉核心动画开始。核心动画 其余的工作,将大部分实际绘图工作交给 用于加速渲染的板载图形硬件。这是自动的 图形加速带来高帧速率和平滑 在不增加CPU负担和减缓应用程序速度的情况下制作动画


我想回答你的问题已经很清楚了。

谢谢。这就是答案。“这种自动图形加速可以产生高帧速率和流畅的动画,而不会增加CPU的负担,也不会降低应用程序的速度。”@frank,不客气。你能接受这个答案吗?