我有一个简单的任务,动画NSWindow,但仍然找不到完成此任务的方法。
我有一个窗口,我希望通过将其设置为超出屏幕边缘来隐藏它。但是连接了2个显示器后,我的窗口只移动到第二个显示器。
有没有办法对要在主屏幕矩形区域中绘制的窗口进行剪裁?
我在Apple文档中找不到类似内容。我知道一些UI效果是通过制作模拟所需行为的技巧来实现的。任何信息都非常感谢!
我的第一个猜测是创建一个带有辅助屏幕内容快照的新窗口。然后在此快照下滑动我的主窗口。但这是一种糟糕的方式 - 屏幕上的内容可能具有动画效果(如视频)。
答案 0 :(得分:3)
你将不得不调整它。
显然,调整真实窗口的大小不会起作用 - 你可以将所有视图调整为副作用,并将任何视图调整为零会使它变得疯狂。
所以,你需要执行一些手法:
将图像视图的autoresizingMask
设置为在视图的同一边缘,与您要为窗口设置动画的屏幕边缘相同。 (例如,如果您要从底部设置窗口的动画,请将底部调整大小。)
请注意,您希望图像视图的宽度和高度固定 - 不大()。您将更改窗口的大小,但您希望图像视图保持相同的大小(并逐渐消失在窗口边缘)。
使用NSViewAnimation或Core Animation为无边框窗口的帧设置动画,将其原点更改为该屏幕边缘的位置,并将相关轴上的帧大小降至零。保持另一个轴不变。例如,如果要设置右边缘的动画,请将x原点更改为屏幕右边缘的x坐标,将宽度更改为零,并保持y原点和高度不变。
当你在它时,你可能想要将窗口的alphaValue
设置为零(NSViewAnimation将其称为“FadeOut”效果)。尝试使用和不使用它,看看你喜欢哪种方式。