Mac OS 中 NSAlert的使用

最近需要做出一个效果,带图片的弹窗。

最开始想到的就是NSAlert

一开始想改变NSAlert的大小去插入图片,确实成功了

NSAlert *alert = [NSAlert alertWithMessageText:@"test" defaultButton:nil alternateButton:nil otherButton:nil informativeTextWithFormat:@""];
    
    
    NSWindow *container = alert.window;
    
    NSRect rect = container.frame;
    
    rect.size.height += 100;
    
    [container setFrame:rect display:YES];
    
    NSImageView *imageView = [[NSImageView alloc] init];
    
    
    
    imageView.image = [NSImage imageNamed:@"image"];
    
    imageView.frame = NSMakeRect(110, 55, imageWidth, imageHeight);
    
    [container.contentView addSubview:imageView];

但是,以后再创建的NSAlert的大小全部变成了第一次设置时的大小,并且无法改变

当然,如果你只是使用一次NSAlert的话,这样也没有什么问题。但是如果想后续使用原始大小的NSAlert,这种方法就不行了。

后来偶然发现了NSAlert的一个属性:accessoryView,可以把imageView赋值给它

alert.accessoryView = imageView;

这样也是成功了,但是你无法随意改变位置,也就是说你只能设置宽度和高度,系统会把我们的View放在一个固定的位置。
但是好处是后续再弹出的NSAlert大小不会受之前的影响,还是原始大小。

两个方法,根据实际场景做出取舍。

你可能感兴趣的:(Mac OS 中 NSAlert的使用)