Проблемы с добавлением просмотра - PullRequest
0 голосов
/ 08 июля 2011

Я довольно новичок в кодировании в target-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];

Кажется, я делаю что-то не так, так как у меня только отображается фон.Может ли кто-нибудь помочь мне в этом?

Заранее спасибо.Гаэль.

Ответы [ 3 ]

0 голосов
/ 08 июля 2011

В вашем коде есть несколько удивительных вещей.

Поскольку вы явно подклассифицируете NSWindow (TransparentWindow?), Вам, возможно, лучше добавить это свойство, которое вы можете установить сразу послеПоследовательность alloc / init.

Вы также можете добавить это свойство к видимому подклассу NSView (RoundedView?), который вы предоставляете.

Ваш комментарий предполагает, что вы получаете тестовый тестicon свойство некоторого приложения. Попробуйте добавить изображение в ваш пакет, его будет легче загрузить с чем-то вроде:

[[NSBundle mainBundle] pathForResource:@"imageFilename"
                                ofType:@"png"];

, где, конечно, формат PNG.

Надеюсь, это поможет.

0 голосов
/ 19 августа 2011

Серхио прав, мне пришлось управлять кадрами моих представлений:

NSImageView *img = [[[[NSImageView alloc] initWithFrame:[[window contentView] frame]] retain] autorelease];
0 голосов
/ 08 июля 2011

Прежде всего, вы пропускаете некоторые объекты:

 [window setContentView:[[RoundedView alloc] init]];
 ...
 NSImageView *img = [[NSImageView alloc] init];

они должны быть автоматически освобождены.

Что касается вашей конкретной проблемы, я бы предложил пройтись по коду с помощью отладчикаубедитесь, что каждый оператор выполняется должным образом (например, что все объекты, которые вы выделяете, не равны нулю).Это поможет отследить проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...