在NSCell中翻转NSImage

时间:2014-02-04 13:17:50

标签: objective-c macos cocoa nscell

为什么NSImage被绘制在NSTableView的NSCell中翻转。以及如何正确解决这种行为。我从数据源方法返回图像:

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

作为解决方法,我试过了:

[NSImage setFlipped:NO];

一切正常,但正如文档中所说,它已弃用方法

osx 10.7-10.9

2 个答案:

答案 0 :(得分:0)

Here是我刚刚遇到的一些信息。

基本上根据您的链接:

  1. 在要显示图像的列中拖动图像单元格

  2. 返回使用您的图像初始化的NSImageCell,如下所示:

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

答案 1 :(得分:0)

我通过替换获取图像的代码来解决问题:

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

为:

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

我不知道这种行为和文件的原因没有说明我。但如果你解释我,我会很高兴的。