我是一个用objective-c编程的新手,我已经因为一个视图管理问题被困了几个小时了。基于Matt Gemmel RoudedFloatingPannel,我想显示一个带有漂亮的半透明圆形背景的NSImage。
//CREATE THE TRANSPARENT WINDOW
window = [[TransparentWindow alloc] initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
//ADD THE ROUNDED BACKGROUND
[window setContentView:[[RoundedView alloc] init]];
//GET RUNNING APPLICATION
NSArray *RunningApps = [[NSWorkspace sharedWorkspace] runningApplications];
//PREPARE TEST IMAGE VIEW
NSImage *image = [[RunningApps objectAtIndex:9] icon];
NSImageView *img = [[NSImageView alloc] init];
[img setImage:image];
//DISPLAY THE ICON
[[window contentView] addSubview:img];似乎我做错了什么,因为我只显示了背景。有人能帮我这个忙吗?
提前谢谢。盖尔。
发布于 2011-07-08 05:14:21
首先,您正在泄漏一些对象:
[window setContentView:[[RoundedView alloc] init]];
...
NSImageView *img = [[NSImageView alloc] init];这些应该是自动释放的。
对于您的具体问题,我建议使用调试器逐步执行代码,并检查每条语句是否按预期执行(例如,您分配的所有对象都不是空的)。这将有助于找到问题所在。
发布于 2011-07-08 05:21:31
在您的代码中有一些令人惊讶的事情。
由于您显然对NSWindow (TransparentWindow ?)进行了子类化,因此您最好将其添加到一个属性中,该属性可以在alloc/init序列之后设置。
还可以将此属性添加到NSView (RoundedView ?)的外观子类中。由你提供。
您的评论表明您正在进行一个测试,以获取某个application.Try的icon属性将图像添加到您的捆绑包中,使用以下内容将更容易加载:
[[NSBundle mainBundle] pathForResource:@"imageFilename"
ofType:@"png"];,其中PNG格式当然是一个例子。
希望这能有所帮助。
发布于 2011-08-20 02:37:19
Sergio是对的,我必须管理我的视图框架:
NSImageView *img = [[[[NSImageView alloc] initWithFrame:[[window contentView] frame]] retain] autorelease];https://stackoverflow.com/questions/6617141
复制相似问题