我的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 :(得分: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,动画就会立即停止。
所以在它立即停止之前,我自己停止它。当我想要使用它时启动它。
注意:你应该比系统更好地阻止它,如果系统停止它就不能正常工作。