Ios 当主线程执行其他操作时,动画仍处于打开状态
这是我的密码。很简单。我的问题是为什么当主线程做其他事情时,动画仍在运行,文档说主线程可以更新ui。主线程可以同时做两件事 可能是GPU制作的动画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];
- (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,不客气。你能接受这个答案吗?