【问题标题】:Setting the background picture position设置背景图片位置
【发布时间】:2012-04-13 11:54:55
【问题描述】:

是否有任何兼容 Mac App Store 的方式将桌面壁纸位置设置为“拉伸以填充屏幕”?

【问题讨论】:

  • 我看到你已经在this thread 上讨论过这个问题,所以我假设这并没有解决你的问题。为了我们其他人的利益,您介意对您的尝试进行一些推断吗?

标签: objective-c macos app-store applescript


【解决方案1】:

This code sample from Apple 很好地概述了该问题以及如何在 Cocoa 中正确编码。显着代码 sn-p 似乎如下:

- (void)updateScreenOptions:(NSScreen*)screen
{
    if (screen)
    {
        NSDictionary *screenOptions = [[NSWorkspace sharedWorkspace] desktopImageOptionsForScreen:curScreen];

        // the value is an NSNumber containing an NSImageScaling (scaling factor)
        NSNumber *scalingFactor = [screenOptions objectForKey:NSWorkspaceDesktopImageScalingKey];
        [scalingPopup selectItemAtIndex:[scalingFactor integerValue]];

        // the value is an NSNumber containing a BOOL (allow clipping)
        NSNumber *allowClipping = [screenOptions objectForKey:NSWorkspaceDesktopImageAllowClippingKey];
        [[clippingCheckbox cell] setState:[allowClipping boolValue]];

        // the value is an NSColor (fill color)
        NSColor *fillColorValue = [screenOptions objectForKey:NSWorkspaceDesktopImageFillColorKey];
        if (fillColorValue)
            [fillColor setColor:fillColorValue];
    }
}

some of the answer errata 中所述,此处用于解决您的问题的正确方法调用似乎是[screenOptions setObject:scalingFactor forKey:NSWorkspaceDesktopImageScalingKey][[NSWorkspace sharedWorkspace] setDesktopImageURL:imageURL forScreen:curScreen options:screenOptions error:&error],它们应该提供所需的功能。

我坦率地承认this was a collaborative effort,但似乎我们已经错误地找到了正确的解决方案。

(关于NSImageScaling 枚举和NSWorkspace 的附加信息,其中包含正确的缩放键。)

【讨论】:

    【解决方案2】:

    很遗憾,没有与 Mac App Store 兼容的方式来设置桌面图像选项。对于桌面图像,它们唯一可用的方法是:

    – desktopImageURLForScreen:
    – setDesktopImageURL:forScreen:options:error:
    – desktopImageOptionsForScreen:
    

    您可以通过执行 AppleScript 来做到这一点,尽管我认为 Apple 不会喜欢这样。

    希望这会有所帮助!

    编辑:

    [screenOptions setObject:scalingFactor forKey:NSWorkspaceDesktopImageScalingKey];
    [[NSWorkspace sharedWorkspace] setDesktopImageURL:imageURL forScreen:curScreen options:screenOptions error:&error];
    

    【讨论】:

    • desktopImageOptionsForScreen 你说...不会将NSWorkspaceDesktopImageScalingKey 设置为NSImageScaleAxesIndependently 来完成这个吗?
    • 我很确定它可以用 Applescript 完成,我见过有人改变系统偏好的例子,这基本上是一样的。
    • - desktopImageOptionsForScreen: 不允许您设置选项,您传入 NSScreen 并取回包含数据的字典。尝试联系开发支持,他们会知道您是否可以使用 Applescript 更改系统偏好设置。
    • @sgonzalez,哦,我现在知道您无法设置它...即使我可以使用 AppleScript,系统偏好设置应用程序也无法编写脚本,所以我认为唯一的选择是有没有实际启动应用程序并指示它使用 AppleScript 按下哪些按钮...
    • @MrGomez,我看到他们使用[screenOptions setObject:scalingFactor forKey:NSWorkspaceDesktopImageScalingKey]; 然后[[NSWorkspace sharedWorkspace] setDesktopImageURL:imageURL forScreen:curScreen options:screenOptions error:&error]!这看起来应该可以工作!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2020-11-21
    • 2015-05-09
    • 2012-03-07
    • 2020-07-03
    • 2011-09-01
    相关资源
    最近更新 更多