2

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

4

2 回答 2

4

这个来自 Apple 的代码示例很好地概述了该问题以及如何在 Cocoa 中为它正确编码。显着的代码片段如下所示:

- (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];
    }
}

正如一些答案勘误表中提到的,正确的方法在这里调用来解决您的问题似乎是[screenOptions setObject:scalingFactor forKey:NSWorkspaceDesktopImageScalingKey]and [[NSWorkspace sharedWorkspace] setDesktopImageURL:imageURL forScreen:curScreen options:screenOptions error:&error],它应该提供所需的功能。

我坦率地承认这是一项协作努力,但似乎我们已经错误地找到了正确的解决方案。

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

于 2012-04-16T19:50:47.107 回答
3

不幸的是,没有与 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];
于 2012-04-16T19:19:20.600 回答