是否有任何符合 Mac App Store 的方式将桌面墙纸位置设置为“拉伸(stretch)以填满屏幕”?
最佳答案
This code sample from 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];
}
}
如 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
的附加信息,其中包含正确的缩放键。)
关于objective-c - 设置背景图片位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10140329/