制作复选框打开和关闭Dock图标

Jos*_*hua 11 cocoa objective-c

如果选中了复选框,我如何设置复选框隐藏停靠栏图标?我已经设置了一个复选框切换菜单栏项目,但是如何使用停靠栏图标?寻找一些代码来做到这一点.谢谢!

Huy*_*yen 12

上面已经介绍了Swift的更新,使用两种方式(它们给出了相同的结果):

public class func toggleDockIcon_Way1(showIcon state: Bool) -> Bool {
    // Get transform state.
    var transformState: ProcessApplicationTransformState
    if state {
        transformState = ProcessApplicationTransformState(kProcessTransformToForegroundApplication)
    }
    else {
        transformState = ProcessApplicationTransformState(kProcessTransformToUIElementApplication)
    }

    // Show / hide dock icon.
    var psn = ProcessSerialNumber(highLongOfPSN: 0, lowLongOfPSN: UInt32(kCurrentProcess))
    let transformStatus: OSStatus = TransformProcessType(&psn, transformState)
    return transformStatus == 0
}

public class func toggleDockIcon_Way2(showIcon state: Bool) -> Bool {
    var result: Bool
    if state {
        result = NSApp.setActivationPolicy(NSApplicationActivationPolicy.Regular)
    }
    else {
        result = NSApp.setActivationPolicy(NSApplicationActivationPolicy.Accessory)
    }
    return result
}
Run Code Online (Sandbox Code Playgroud)


小智 9

我使用这段代码:

BOOL iconInDock = [[NSUserDefaults standardUserDefaults] boolForKey:smHideShowIcon];
if (iconInDock) {
    ProcessSerialNumber psn = { 0, kCurrentProcess };
    // display dock icon
    TransformProcessType(&psn, kProcessTransformToForegroundApplication);
}
Run Code Online (Sandbox Code Playgroud)

好吧,如果我在Info.plist中设置LSUIElement = 1,它对我的​​应用程序有效.这个代码只适用于show,但我怎么能隐藏图标?