【问题标题】:Find the location of the Dock programmatically?以编程方式查找 Dock 的位置?
【发布时间】:2011-12-04 18:13:44
【问题描述】:

有没有办法在代码中找出 Mac 上的 Dock 是位于用户显示器的底部、左侧还是右侧?

【问题讨论】:

  • 你需要它做什么?
  • 我正在开发一款应用程序,该应用程序会将自身停靠在屏幕底部或侧面,但前提是当前的 Mac 停靠点不存在。

标签: objective-c macos cocoa dock


【解决方案1】:

NSScreenvisibleFrame 方法,它返回一个不包括当前停靠栏和菜单栏占用区域的矩形。您可以将此矩形与全屏矩形(- (NSRect) [NSScreen* frame])进行比较并确定停靠位置。

【讨论】:

  • 酷,这就是我最初的想法。我希望有一些我不知道的方法会为我返回它。再次感谢。
【解决方案2】:

这可能更简单……

defaults read com.apple.dock "orientation"

底部

您还可以找到..autohide(即1)、large size(即“65.48148”)和magnification(即1)等。

【讨论】:

  • 如何从可可应用中调用“默认读取 com.apple.dock 方向”?
  • NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *dockParameterYouWant = [[defaults persistentDomainForName:@"com.apple.dock"] valueForKey:@"thatParameterYouWant"];
  • 谢谢,这有助于解决我的另一个问题
  • 对不起,我不是故意的。我目前仍在使用其他答案。
  • 这也适用于沙盒应用吗?还有关于如何获得码头尺寸的任何想法?还是用户悬停时的通知(或其中的图标)?
【解决方案3】:

private discovered API 被偏好面板使用

typedef enum {
  kCoreDockOrientationTop = 1,
  kCoreDockOrientationBottom = 2,
  kCoreDockOrientationLeft = 3,
  kCoreDockOrientationRight = 4
} CoreDockOrientation;

extern void CoreDockGetOrientationAndPinning(CoreDockOrientation *outOrientation, CoreDockPinning *outPinning);
// If you only want to set one, use 0 for the other.
extern void CoreDockSetOrientationAndPinning(CoreDockOrientation orientation, CoreDockPinning pinning);

【讨论】:

    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 2019-02-16
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多