3

我正在使用 Mac OS X 10.6 SDK ImageKit 的 IKSaveOptions 将文件格式附件添加到 NSSavePanel 使用:

- (id)initWithImageProperties:(NSDictionary *)imageProperties imageUTType:(NSString *)imageUTType;

- (void)addSaveOptionsAccessoryViewToSavePanel:(NSSavePanel *)savePanel;

我尝试创建一个 NSDictionary 来指定 Compression = 5,但是当 NSSavePanel 首次出现时,我似乎无法让 IKSaveOptions 显示 Format:TIFF, Compression:LZW。我还尝试保存返回的 imageProperties 字典和 userSelection 字典,然后尝试将其反馈给下一次,但 NSSavePanel 始终默认为 Format:TIFF 和 Compression:None。

有谁知道如何自定义显示在附件视图中的默认格式/压缩?

我想将保存选项默认为 TIFF/LZW,此外还想恢复用户上次选择的文件格式以供下次使用。我可以使用 imageUTType 控制文件格式(例如 kUTTypeJPEG、kUTTypePNG、kUTTypeTIFF 等),但我仍然无法为 TIFF 或 JPEG 格式设置初始压缩选项。

谢谢,

-Rei

4

1 回答 1

2

没有公共 API 可以控制这一点。但是,您可以通过 NSSavePanel 的附件视图对其进行修改。

例子:

self.saveOptions = [[IKSaveOptions alloc] initWithImageProperties:nil
                                                            imageUTType:(NSString *)kUTTypeTIFF];
[self.saveOptions addSaveOptionsAccessoryViewToSavePanel:savePanel];


// find compression options popup button in accessory view, select desired compression
// correct title depends on localization -> be carefull with LZW and tag
NSView *accessoryView = [savePanel accessoryView];
NSArray *accessorySubViews = [accessoryView subviews];

for (id view in accessorySubViews) {

    if([view isKindOfClass:[NSPopUpButton class]]){
        NSPopUpButton *popupButton = (NSPopUpButton *)view;
        NSArray *menuItems =[[popupButton menu] itemArray];
        for (NSMenuItem *menutItem in menuItems) {
            if([[menutItem title] isEqualToString:@"LZW"]) {
                //make sure you reverse engineer tags for
                [popupButton selectItemWithTitle:@"LZW"];
                id target = [menutItem target];
                SEL action = [menutItem action];
                [target performSelector:action withObject:popupButton];
            }
        }
    }
}
于 2014-04-13T15:19:16.557 回答