【发布时间】:2011-12-04 18:13:44
【问题描述】:
有没有办法在代码中找出 Mac 上的 Dock 是位于用户显示器的底部、左侧还是右侧?
【问题讨论】:
-
你需要它做什么?
-
我正在开发一款应用程序,该应用程序会将自身停靠在屏幕底部或侧面,但前提是当前的 Mac 停靠点不存在。
标签: objective-c macos cocoa dock
有没有办法在代码中找出 Mac 上的 Dock 是位于用户显示器的底部、左侧还是右侧?
【问题讨论】:
标签: objective-c macos cocoa dock
NSScreen 有visibleFrame 方法,它返回一个不包括当前停靠栏和菜单栏占用区域的矩形。您可以将此矩形与全屏矩形(- (NSRect) [NSScreen* frame])进行比较并确定停靠位置。
【讨论】:
这可能更简单……
defaults read com.apple.dock "orientation"
底部
您还可以找到..autohide(即1)、large size(即“65.48148”)和magnification(即1)等。
【讨论】:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *dockParameterYouWant = [[defaults persistentDomainForName:@"com.apple.dock"] valueForKey:@"thatParameterYouWant"];
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);
【讨论】: