0
我試圖以編程方式創建一個無邊界NSWindow接近鼠標光標以及它應該顯示的圖像的大小。不過,我總是會得到一個更大的窗口(每邊大約是它應該是的三倍)!我仔細檢查了我的imageObj具有正確的大小,並且所有的NSSize和NSRect結構都使用正確的值創建。已註釋的行也不能正常工作(但是這將是正確的?)以編程方式創建具有特定大小的NSWindow失敗
我已經通過此網站搜索,但我找不到任何類似的問題...我做錯了什麼? 這裏是我的代碼:
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];
這裏*取勝是一個NSWindow和*視圖是一個NSImageView。兩者都是在我的源文件之上聲明的。 我正在運行雪豹,所以任何嚴格的> 10.6.8代碼將無法正常工作(已經嘗試過)。
非常感謝您的幫助。
我複製了你的代碼,它對我來說工作得很好。我使用10.8,但我不確定這會有什麼區別。我在代碼中看不到的一件事是如何創建圖像視圖和視圖。你用什麼代碼來創建它?你是否在應用的其他地方設置了它的任何屬性? – rdelmar
還有一個想法 - 我不知道圖標文件的行爲與其他圖像的行爲不同。你可以用jpeg試一下,看看你是否還有同樣的問題。 – rdelmar
解決!謝謝,你讓我得到解決方案! 實際上,NSImageView是在InterfaceBuilder中創建的,(你讓我想到了這一點)它包含一個NSImageCell。我注意到,我得到的大小總是在Interface Builder中設置的大小,不管我以編程方式做了什麼。顯然有一些非常重要的信息我錯過了以這種方式獲得正確的東西......我現在通過編程創建了NSImageView ex novo,並且一切正常。非常感謝你! – gianluca