2014-10-29 2 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으로 사용하면 실제로 코어 애니메이션이 사용됩니다.

은 내가 CoreAnimation_guide에서 단락을 참조 :

코어 애니메이션 당신이보기와 앱 다른 시각적 요소에 애니메이션을 사용하는 모두 iOS 및 OS의 X에서 사용할 수있는 그래픽 렌더링 및 애니메이션 인프라 입니다 . Core Animation을 사용하면 애니메이션의 각 프레임을 그리는 데 필요한 대부분의 작업이 수행됩니다. 모든 애니메이션 매개 변수 (예 : 시작 및 끝점)를 구성하고 Core Animation이 시작되도록 지시해야합니다. Core Animation 나머지 작업을 수행하여 렌더링 작업을 가속화하기 위해 대부분의 실제 그리기 작업을 온보드 그래픽 하드웨어로 전달합니다. 이 자동 그래픽 가속은 높은 프레임 속도와 부드러운 애니메이션을 CPU에 부담을주지 않고 앱 속도를 저하시키지 않습니다.

나는 귀하의 질문에 대답하기에 충분하다고 생각합니다.

+0

감사합니다. 이것은 자동 그래픽 가속으로 인해 CPU 부담과 앱 속도 저하없이 높은 프레임 속도와 부드러운 애니메이션이 가능합니다. " – frank

+0

@ 프랭크 환영합니다. 대답을 수락 할 수 있습니까? – KudoCC

관련 문제