我有两个窗口,每个窗口都有一个圆形的 NSView
:
------------------ ------------
|X-+ Oscillator | |X-+ Mixer |
|----------------| |----------|
| | | |
| O | | O |
| | | |
| | | |
------------------ ------------
两个窗口都在一个单独的 NIB 中。我希望能够在运行时使用拖放在两个圆形 NSView
之间画一条线,就像在 Interface Builder 中连接 IBOutlets 一样:
------------------ ------------
|X-+ Oscillator | |X-+ Mixer |
|----------------| |----------|
| | | |
| O-------+-----+-----O |
| | | |
| | | |
------------------ ------------
我还希望能够使用绘制的线确定 NSView
连接到哪个 NSView
。我需要这个来将振荡器连接到混音器。我还希望能够通过拖入空白区域来移除连接。
谁能给我解释一下如何做到这一点?谢谢。
最佳答案
问题在于您可以在其中绘制跨越两个窗口的组合矩形(或它们所在的一个或多个屏幕)的 View 。这通常通过无边界、透明的“覆盖窗口”来完成。网上有很多无边框透明窗口的示例。
在拖动开始时,叠加窗口出现(但用户不可见)位于您的绘图区域上方。随着拖动的更新,您绘制线条,将叠加 View 坐标转换为源/目标 View 坐标或从源/目标 View 坐标转换。拖动完成后,做一些动画(如淡入淡出或闪烁),然后命令覆盖窗口。
关于objective-c - 就像在 Interface Builder 中一样在窗口之间画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3031952/