Подключить NSImageView для просмотра с помощью IB? - PullRequest
1 голос
/ 23 февраля 2011

До сих пор я программировал только на iPhone, так что Какао в некотором смысле сбивает меня с толку.Вот где я наткнулся на препятствие.Я хотел, чтобы мое окно было таким, чтобы фон был невидимым и без заголовка.Примерно так:

enter image description here

Вот как я это делаю:

Я установил класс window в собственное окно, которое я 'мы создали так:

CustomWindow.h

#import <Foundation/Foundation.h>
#import <Cocoa/Cocoa.h>


@interface CustomWindow : NSWindow {
    @private
    NSPoint initialLocation;
}

@property(assign)NSPoint initialLocation;

@end

CustomWindow.m

//trimmed to show important part
#import "CustomWindow.h"

@implementation CustomWindow
@synthesize initialLocation;

- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)flag {
    // Removes the window title bar
    self = [super initWithContentRect:contentRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO];
    if (self != nil) {
        [self setAlphaValue:1.0];
        [self setOpaque:NO];
    }
    return self;
}

@end

Теперь, в моем .xib файле для этого окна я добавилпользовательский вид на окно.Я установил класс представления в свой собственный класс, который наследуется от NSView.Вот как я это настраиваю:

MainView.h

#import <Cocoa/Cocoa.h>

@interface MainView : NSView {
@private
//nothing to see here, add later
}

@end

MainView.m

//trimmed greatly again to show important part
#import "MainView.h"

@implementation MainView

- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
    }

    return self;
}

- (void)drawRect:(NSRect)rect {
    // Clear the drawing rect.
    [[NSColor clearColor] set];
    NSRectFill([self frame]);

}

@end

Так вот мой вопрос.Я добавил NSImageView в свой пользовательский вид (MainView) в Интерфейсном Разработчике.Однако по какой-то причине я не могу понять, как связать это представление изображения с переменной экземпляра в моем настраиваемом представлении.Похоже, они не могут быть подключены, как обычно, если бы я создавал приложение для iPhone.Есть идеи, как это будет сделано?

1 Ответ

1 голос
/ 23 февраля 2011

Вы подключаете объекты, созданные в XIB в Mac OS X, так же, как вы делаете это для программ iOS. Просто добавьте свойство NSImageView в ваш основной вид, отметьте его как IBOutlet и подключите его.

Например,

В MainView.h создайте свойство для вашего NSImageView и сделайте его IBOutlet:

#import <Cocoa/Cocoa.h>

@interface MainView : NSView {
  NSImageView *imageView;
}

@property(retain) IBOutlet NSImageView *imageView;

@end

В конструкторе интерфейса убедитесь, что для класса для настраиваемого представления задано значение MainView, для этого щелкните объект «Владелец файла» в пользовательском представлении XIB, а затем выберите опцию идентификации в инспекторе и введите MainView в качестве типа класса. .

Далее, CTRL + щелкните владельца файла, перетащите стрелку в NSImageView и выберите выход imageView.

Это все, что нужно сделать. Вы должны иметь возможность ссылаться на представление изображения из кода сейчас.

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