Cocoa弹出窗口与iCal类似

时间:2009-11-12 03:20:04

标签: cocoa macos icalendar modalpopups

当用户选择NSTableView中的单元格时,我想打开一个叠加窗口(弹出窗口),类似于在iCal中选择一个事件。在iCal中选择事件会显示一个用于编辑事件的窗口,但是通过平滑地设置窗口打开并在基础日历中添加指向偶数的箭头来实现。有谁知道这里使用的是什么?这是一堆隐藏/自定义API还是可供公众使用?

3 个答案:

答案 0 :(得分:6)

编辑器窗格看起来是一个带有自定义视图的自定义无边框透明窗口(视图定义了形状,因此也定义了它所投射的阴影)。了解详情here。您甚至可以使用MAAttachedWindow

关于动画,它就像要求窗口的动画师为帧和alpha值设置动画一样简单(将它们组合在一起)。您可能希望首先直接在其“开始位置”设置所有内容(即,当窗口在屏幕外时,将其alpha设置为零,并将其框架设置为较小的版本,以便它“放大”la iCal ),然后将其放在屏幕上并启动分组动画:

[NSAnimationContext beginGrouping];
[[window animator] setFrame:someNewSlightlyLargerFrame];
[[window animator] setAlphaValue:1.0];
[NSAnimationContext endGrouping];

分组结束后,动画将开始(异步),代码执行将继续。需要考虑的是首先让所有东西“上演”(包括确保你的窗口的子视图已经预先更新,因此它们不会在你的动画中间改变......除非你想要它们)。

因此,您需要了解的两个独立技术是自定义窗口和基本的Cocoa动画。

答案 1 :(得分:4)

如果您使用的是OSX 10.7及更高版本,NSPopover将完成您正在寻找的工作。

答案 2 :(得分:1)

你是在谈论从iCal应用程序底部的列表中选择吗?

不确定你到底指的是什么,但是在一个时间内有动画转换的api。

在Apple的其他应用程序中,Apple的开发人员使用与其他人相同的API(大多数情况下我猜)。有许多东西可以定制,Apple从设计的角度定制任何所需的东西......