以编程方式创建具有特定大小的NSWindow失败

时间:2012-08-25 11:50:39

标签: objective-c cocoa nswindow

我正在尝试以编程方式创建一个靠近鼠标光标的无边界NSWindow,并显示它应显示的图像大小。但是我总是得到一个更大的窗口(每边大约是应该的三倍)!我仔细检查了我的imageObj是否具有正确的大小,并且所有NSSize和NSRect结构都是使用正确的值创建的。注释掉的行也不起作用(但哪个是正确的?)

我已经搜索了这个网站,但我找不到任何类似的问题......我做错了什么? 这是我的代码:

NSString* imageName = [[NSBundle mainBundle] pathForResource:@"os_unknown" ofType:@"icns"];
NSImage* imageObj = [[NSImage alloc] initWithContentsOfFile:imageName];
[view setImage:imageObj];

NSSize s = [imageObj size];
NSPoint p = [NSEvent mouseLocation];
NSRect r = [NSWindow frameRectForContentRect:NSMakeRect(p.x, p.y, s.width, s.height)
                                   styleMask:NSBorderlessWindowMask];
//NSRect r = {p, s};

if (win) [win release];
win = [[NSWindow alloc] initWithContentRect:r
                                  styleMask:NSBorderlessWindowMask
                                    backing:NSBackingStoreBuffered
                                      defer:false];
[win setLevel:kCGUtilityWindowLevel];

[view setBounds:NSMakeRect(0, 0, s.width, s.height)];
[[win contentView] addSubview:view];
[win orderFront:sender];    

这里* win是NSWindow,* view是NSImageView。两者都在我的源文件之上声明。 我正在运行Snow Leopard,所以任何严格的> 10.6.8代码都不会工作(已经尝试过了)。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

解决! NSImageView *view是在Interface Builder中创建的。我得到的大小是那里设置的大小,无论我用什么代码调整大小。通过以编程方式创建NSImageView,一切都很有效!

特别感谢 rdelmar 让我思考并获得解决方案!