背景:我最近有两台显示器,想要一种将聚焦窗口移到另一个屏幕上的方法,反之亦然。我已经通过使用Accessibility API实现了这一目标。 (具体来说,我得到了一个AXUIElementRef来保存与焦点窗口相关联的AXUIElement,然后设置NSAccessibilityPositionAttribute值来移动窗口。
我几乎可以按照我想要的方式进行这项工作,除了我想为窗户的移动制作动画。我以为如果我能以某种方式获得NSWindow,就可以得到它的图层并使用CoreAnimation来动画化窗口移动。
不幸的是,我发现这是不可能的。 (纠正我,但我错了-如果有一种方法可以做到这一点,那就太好了!)因此,我想向大家寻求帮助。如果可以访问AXUIElementRef,应该如何对聚焦窗口的移动进行动画处理?
-R
- 编辑
通过创建一个while循环并每次将窗口的位置少量移动以制作成功的动画,我能够获得原始的动画。但是,结果还是很差的。如您所料,它需要很多不必要的处理能力,而且仍然非常不稳定。肯定有更好的办法。
最佳答案
我能想象的最好的方法是在窗口的AXUIElement信息值和CGWindow api返回的信息之间执行一些hacky属性比较。一旦确定了CGWindow API中的哪些窗口与AXUIElementRefs匹配,就可以获取当前窗口内容的位图,用自己的人造窗口自定义动画绘制覆盖屏幕,然后在放置覆盖时设置真正的AXUIElementRef到所需的最终动画位置。
哈克
关于objective-c - 我想为外部OS X应用程序窗口的移动制作动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4927592/