2013-08-19 1 views
1

Мой NSProgressIndicator анимирует в представлении , когда я переключаюсь на другой вид и переключаюсь обратно мой NSProgressIndicator исчезает.Анимация NSProgressIndicator исчезает при изменении вида

Почему?

Вот мой код для переключения в другой режим

- (void)switchToView:(NSView *)newView withAnimate:(BOOL)animate 
{ 
     if ([[rootView subviews] count] != 0) 
     { 
      [rootView setWantsLayer:YES]; 
      [rootView displayIfNeeded]; 

      NSTimeInterval duration = [[self window] animationResizeTime:newFrame]; 
      [NSAnimationContext beginGrouping]; 
      [[NSAnimationContext currentContext] setDuration:0.25]; 
      [[rootView animator] replaceSubview:[[rootView subviews] objectAtIndex:0] with:newView]; 
      [NSAnimationContext beginGrouping]; 
      if (duration > 0.25) { 
       [[NSAnimationContext currentContext] setDuration:0.25]; 
      } 
      else{ 
       [[NSAnimationContext currentContext] setDuration:duration]; 
      } 
      [[[self window] animator] setFrame:newFrame display:YES animate:YES]; 
      [NSAnimationContext endGrouping]; 
      [NSAnimationContext endGrouping]; 

      [self performSelector:@selector(endAnimation) withObject:nil afterDelay:0.25f]; 
      } 


    } 

    -(void)endAnimation{ 
      [[ _mainWindow contentView] setWantsLayer:NO]; 
    } 

Я просто заменить вид и сделать замирание из анимации NSProgressIndicator анимировать все время в представлении.

ответ

0

Я решил это самостоятельно, я думаю, это будет полезно для ваших ребят.

Я останавливаю свой NSProgressIndicator до того, как хочу заменить свой просмотр с помощью NSProgressIndicator.

затем я заменяю вид новым видом, если я вернусь назад, я запустим NSProgressIndicator с помощью - (void) выполнить выбор: (SEL) aSelector withObject: (id) anArgument afterDelay: (NSTimeInterval) delay; метод, просто установите задержку = 0 в порядке.

В файлах xib вы должны установить NSProgressIndicator DisplayWhenStopped - ДА.

И он будет работать хорошо.

Тогда причина после 10.6.5, по крайней мере, на OS X 10.6.5 и выше, как только вы установили свойство желанияLayer неопределенного прогресса в YES, анимация немедленно прекратится.

Итак, прежде чем он немедленно остановится, я остановлю его сам. И начните его, когда я захочу его использовать.

ВНИМАНИЕ. Вы должны остановить его самостоятельно, чем система, это может не работать, если система остановит его.