MacOS Xcode Objective-C. Очень новый, так что несите меня.

Программное отображение изображения с использованием:

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

- (void)drawRect:(NSRect)rect {
    rect = [ self bounds ];
    if( m_imgBack )
      [m_imgBack drawInRect:NSMakeRect(0,0,rect.size.width,rect.size.height) fromRect:NSZeroRect operation:NSCompositeSourceOver fraction:1.0];
}

- (void)InitControls {
    LoadImageFromFile( [ NSString stringWithFormat:@"%@/common/background.png", DATA_PATHNAME ], &m_imgBack );
}

Это без проблем рисует background.png. Однако я не могу скрыть это, используя:

[m_imgBack setHidden:YES];

Это просто отбрасывает ошибку: [NSImage setHidden:]: нераспознанный селектор отправлен в экземпляр. Я думал, вы можете скрыть на NSImage?

0
BinDev 25 Фев 2021 в 19:28

1 ответ

Лучший ответ

Вы можете думать о NSImage как об объекте данных, поэтому его скрытие не имеет смысла, как и скрытие NSArray или NSDictionary не имеет смысла.

Если вы показываете изображение в виде, его можно скрыть с помощью isHidden. Из фрагмента кода не ясно, к какому классу принадлежит код, но, предполагая, что это подкласс NSView, вы можете попробовать [self setHidden:YES].

3
sbooth 25 Фев 2021 в 17:04