我想禁用Cocoa在显示模态表时执行的动画。
Apple的Sheet Programming Guide州:
...其他工作表行为,例如动画出现和被解散时,由应用程序工具包自动处理。
但它没有提供任何关于如何禁用此效果的提示。
我创建了一个自定义工作表(NSWindow的子类,具有透明背景和一些控件)。我可以使用标准的beginSheet方法显示它,如下所示:
[NSApp beginSheet:myCustomSheet
modalForWindow:mainWindow
modalDelegate:self
didEndSelector:...];
工作表显示正常,但在出现时会显示动画,并在关闭时再次显示。
注意:我正在为触摸屏/自助服务终端类型应用编写完全自定义的用户界面,因此没有适用的常用Apple用户界面指南。
答案 0 :(得分:1)
这是一个疯狂的猜测(我太懒了,不能尝试),但可以使用Core Animation处理动画。如果是这样,您可以这样做:
[CATransaction begin];
[CATransaction setValue: [NSNumber numberWithBool: YES]
forKey: kCATransactionDisableActions ];
[NSApp beginSheet:myCustomSheet
modalForWindow:mainWindow
modalDelegate:self
didEndSelector:...];
[CATransaction commit];
答案 1 :(得分:1)
工作表的动画速度有一个用户默认值。查找并查看如果您尝试将其设置为0会发生什么。
答案 2 :(得分:0)
在要显示为工作表的NSWindow中覆盖animationResizeTime:
,并使其返回0。这比弄乱CATransaction(似乎无法可靠工作)或NSWindowResizeTime(会影响所有窗口)要好。