我有.app
。我想编辑plist.Info
,这样如果-P "main"
的命令行参数在路径中,它将使用我的资源文件夹中的另一个图标。如果用户右键点击并说“#34;留在码头"它将与命令行参数保持对接,因此在下次单击时它将使用相同的命令行参数启动。
这可能吗?
最糟糕的演员场景:任何Objective-c方式检查路径以查看是否有任何命令行参数?然后我将以程序方式运行setApplicationIconImage
(最坏的情况意味着如果上述情况不可行)(然后生病也必须以[NSWindow miniwindowImage]编程获取微型窗口并在他们的msyelf上绘制迷你图标还会收听NSWindowWillMiniaturizeNotification
的未来通知,并在通知触发时进行抽奖,因此这是最糟糕的情况)
答案 0 :(得分:1)
我不确定我是否完全跟随你。
但我认为你不需要编辑plist.Info,我觉得以任何方式这样做都不好。
我只想用CFPreferencesSetValue
写入应用程序首选项文件,然后更改一个条目,确定应用程序是否更改了它的图标。
从您的参数检查中调用:
[self changIcon:(CFBooleanRef)false];
-(void) changIcon:(CFBooleanRef)prefValue
{
CFStringRef appID = CFSTR("com.yourApp.BundleID");
CFStringRef Key = CFSTR("swapIcon");
CFBooleanRef Value = prefValue ;// kCFBooleanTrue;//or kCFBooleanFalse
// Set up the preference.
CFPreferencesSetValue(Key,
Value,
appID,
kCFPreferencesCurrentUser,
kCFPreferencesAnyHost);
// Write out the preference data.
CFPreferencesSynchronize(appID,
kCFPreferencesCurrentUser,
kCFPreferencesAnyHost);
}
更改图标
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
BOOL swapIcon = [defaults boolForKey:@"swapIcon"];
if (swapIcon ) {
NSImage * b1Image = [NSImage imageNamed:@"bl1"];
[NSApp setApplicationIconImage:b1Image];
}else {
[NSApp setApplicationIconImage:nil];//--Nil will make the app use thenormal icon
}
为了得到更好的答案,你需要更清楚地解释一下。