Перевернул NSImage в NSCell

Почему нарисованный NSImage перевернулся в NSCell NSTableView. И как правильно исправить такое поведение. Я возвращаю изображение из метода источника данных:

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
return [NSImage imageNamed: @"test.png"];
}

В качестве обходного пути я пробовал:

[NSImage setFlipped:NO];

Все в порядке, но в документации сказано, что это устаревший метод

ОС 10.7-10.9


person toohtik    schedule 04.02.2014    source источник


Ответы (2)


Вот информация, которую я только что нашел.

В основном по ссылке вы должны:

  1. Перетащите ячейку изображения в столбце, в котором вы хотите отобразить изображение.

  2. Верните NSImageCell, инициализированный вашим изображением, например:

    - (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row 
    {
        NSCell *imageCell = [[NSCell alloc] initImageCell:[NSImage imageNamed: @"test.png"]];
        return imageCell;
    }
    
person insys    schedule 04.02.2014
comment
Спасибо, но я получаю крах с вами путь. С моим способом все ок, но изображение перевернуто. - person toohtik; 27.03.2014

Я решил проблему, заменив код получения изображения из:

return [NSImage imageNamed: @"test.png"];

to:

NSData * imageData = [NSData dataWithContentsOfFile: [[NSBundle mainBundle] pathForImageResource: test.png]];
return [[NSImage alloc] initWithDataIgnoringOrientation:imageData];

Я не знаю причины такого поведения, и документация мне ничего не говорит. Но я буду рад, если вы объясните мне.

person toohtik    schedule 27.03.2014