首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Addsubview问题

Addsubview问题
EN

Stack Overflow用户
提问于 2011-07-08 05:01:15
回答 3查看 731关注 0票数 0

我是一个用objective-c编程的新手,我已经因为一个视图管理问题被困了几个小时了。基于Matt Gemmel RoudedFloatingPannel,我想显示一个带有漂亮的半透明圆形背景的NSImage。

代码语言:javascript
复制
//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];

似乎我做错了什么,因为我只显示了背景。有人能帮我这个忙吗?

提前谢谢。盖尔。

EN

回答 3

Stack Overflow用户

发布于 2011-07-08 05:14:21

首先,您正在泄漏一些对象:

代码语言:javascript
复制
 [window setContentView:[[RoundedView alloc] init]];
 ...
 NSImageView *img = [[NSImageView alloc] init];

这些应该是自动释放的。

对于您的具体问题,我建议使用调试器逐步执行代码,并检查每条语句是否按预期执行(例如,您分配的所有对象都不是空的)。这将有助于找到问题所在。

票数 0
EN

Stack Overflow用户

发布于 2011-07-08 05:21:31

在您的代码中有一些令人惊讶的事情。

由于您显然对NSWindow (TransparentWindow ?)进行了子类化,因此您最好将其添加到一个属性中,该属性可以在alloc/init序列之后设置。

还可以将此属性添加到NSView (RoundedView ?)的外观子类中。由你提供。

您的评论表明您正在进行一个测试,以获取某个application.Try的icon属性将图像添加到您的捆绑包中,使用以下内容将更容易加载:

代码语言:javascript
复制
[[NSBundle mainBundle] pathForResource:@"imageFilename"
                                ofType:@"png"];

,其中PNG格式当然是一个例子。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2011-08-20 02:37:19

Sergio是对的,我必须管理我的视图框架:

代码语言:javascript
复制
NSImageView *img = [[[[NSImageView alloc] initWithFrame:[[window contentView] frame]] retain] autorelease];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6617141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档