更改视图时,NSProgressIndicator动画消失

时间:2013-08-19 00:39:31

标签: cocoa 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动画。

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题,我认为这会对你们的人有所帮助。

在我想用NSProgressIndicator替换我的视图之前,我停止了我的NSProgressIndicator。

然后我用新视图替换视图,如果我切换回来,我将启动NSProgressIndicator与 - (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;方法,只需设置延迟= 0即可。

在xib文件中,您应该设置NSProgressIndicator DisplayWhenStopped为YES。

它会很好用。

然后原因是在10.6.5之后,至少在OS X 10.6.5及更高版本上,只要你将一个不确定进度指示器的wantsLayer属性设置为YES,动画就会立即停止。

所以在它立即停止之前,我自己停止它。当我想要使用它时启动它。

注意:你应该比系统更好地阻止它,如果系统停止它就不能正常工作。