0%

Mac App 调用显示关于页面

创建新项目的时候系统会自动创建一个显示页面,比如 vs code 的,这都是默认显示的窗口
VSCode
但是我们想手动调用这个默认窗口的话,系统也提供了一些方法,可以直接显示出来

1
2
- (void)orderFrontStandardAboutPanel:(id)sender;

也可以使用下面这个方法设置窗口里面要显示的内容

1
- (void)orderFrontStandardAboutPanelWithOptions:(NSDictionary<NSAboutPanelOptionKey, id> *)optionsDictionary;

接受参数是一个字典 key 是 NSAboutPanelOptionKey

orderFrontStandardAboutPanel实现就是调用 orderFrontStandardAboutPanelWithOptions 传参 nil 实现的。

具体使用方法 :

1
2
3
4
5
6
7
    NSDictionary *info = @{
// NSAboutPanelOptionCredits: attributedString,
NSAboutPanelOptionApplicationName:@"应用名称",
NSAboutPanelOptionApplicationIcon:[NSImage imageNamed:NSImageNameComputer],
NSAboutPanelOptionVersion:@"1.0.0",
NSAboutPanelOptionApplicationVersion:@"1.0.0.100"
};

显示如下图所示:
AboutPanel
第一行icon 就是应用图标了,NSAboutPanelOptionApplicationIcon可以不设置,默认使用的是 [NSImage imageNamed:@"NSApplicationIcon"]

第二行应用名称,NSAboutPanelOptionApplicationName,参数字符串。

第三行NSAboutPanelOptionVersion、第四行NSAboutPanelOptionApplicationVersion

版本信息(内容长了会自动换行,括号里的就理解为第四行吧),也可以不填,默认显示分别是 CFBundleVersion CFBundleShortVersionString

第五行,就是上图一长串abc那个,有两种显示方式,当然也可以不设置。
第一种:

1
2
3
4
5
6
7
8
9
10
11

NSString *string = @"aaaaaaaaa\nbbbbbbbbb\ncccccccccc";

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

[paragraphStyle setAlignment:NSTextAlignmentCenter];

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string];

[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [string length])];

通过关键字 NSAboutPanelOptionCredits 设置value就可以了,这个只接收 NSAttributedString 类型的参数,其他的会报错。

第二种:
在项目中添加名称为Credits.rtf(这个文件也是可以多国语言的)的文件,在里面添加想要添加内容,如下图所示
Credits

最后一行 copyright 信息,是读取项目中info.plist的copyright字段来显示的,文档上没有提及单独设置的地方。

infoplist

最后 MainMenu.xib 默认创建出了关于的item 并且绑定了事件
AboutPanelAction
我们可以重新绑定个事件,做自己的操作,也可以添加个 NSApplication 的类别,重写 - (void)orderFrontStandardAboutPanel:(id)sender; 方法
AboutPanelAction

只支持10.13以上

参考