2014-11-01 6 views
0

viewController.view에 약 500 개의 뷰를 추가했습니다. 이 작업은 대상에서 약 5 초가 걸렸습니다. 이제 추가 할 각 하위보기가 끝난 후 화면이 새로 고침되어 사용자가 화면에 하나씩 나타나는 것을 볼 수 있습니다. subviews를 추가 한 후 setNeedsDisplay가 작동하지 않습니다.

나는 나의의 ViewController이 시도 :

-(void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    for(int i=0; i<500; i++) 
    { 
     //...Create aView 
     [self.view addsubview:aView]; 
     [self.view setNeedsDisplay]; 
    } 
} 

나는 그것을 실행 아무것도 모든 뷰는 한 번에 나타난 5 초 동안 일어나지 않았다. [self.view setNeedsDisplay]가 주 스레드 컨텍스트에서 호출되었는지 확인했습니다.

하위 뷰를 하나씩 만드는 방법을 알려주세요.

+0

합니다. 다시 그리지 마라. 그렇지 않아야한다. –

+1

시각적 효과에 따라 타이머, 실행 루프 및 애니메이션을 연구 할 수있는 좋은 주제가됩니다. –

답변

0

간단한 해결책을 찾았습니다. 나는 나의의 ViewController에 새로운 속성을 추가 - (500)는 다음의 viewDidLoad에서 다음 방법이라고에 'subviewsCount'마녀가 초기화되었습니다 당신은 아마`setNeedsDisplay`의 설명서를 읽어야

-(void) addSubviewsToMotherView 
{ 
    self.subviewsCount -=1; 
    if (self.subviewsCount >= 0) 
    { 
     [UIView animateWithDuration:0.0 
           delay:0.0 
          options:UIViewAnimationOptionLayoutSubviews 
         animations:^{ 
          [self methodToAddSubview]; 
         } 
         completion:^(BOOL finished){ 
          [self addSubviewsToMotherView]; 
         } 
     ]; 

    } 
} 
관련 문제