我想要显示的一个NSTableView:

|缩略图|文件名|

我创建的NSTableView的在IB和它委托给一个类。在课堂上,我绕过一个模型只是为了获得一个POC实施和创建数据源委托方法。他们填充文本的单元格就好了。然而,现在我在所述第一小区需要包含图像的小缩略图的步骤。

我想要做的(我敢肯定,这是愚蠢的,简单)就是抓住图像图标 - 它是公平的假设,所有文件和JPEG文件的缩略图有内嵌 - 并把该图标,缩放为64×64到表格单元格。有大量的代码如何生成缩略图,但我没有看到太多,让我对工作的代码。下面是我有:

  # This works if I am only populating text values in the when 'Image'
  def tableView_objectValueForTableColumn_row_(image_table, column, row)
    thumbnailImage(75)
    case column.headerCell.stringValue
      when 'File Name'
        (0..99).to_a[row].to_s
      when 'Image'
        # here's where I want to return a square 64x64 image or ImageCell
        thumbnailImage(64)
      else
        '???'
    end
  end

  # Creates square thumbnail
  def thumbnailImage(size)
    file = "file://localhost/Users/sxross/Downloads/iStock_000004561564XSmall.jpg"
    image = CGImageSourceCreateWithURL(CFURLCreateWithString(nil, file, nil), nil)
    thumb = CGImageSourceCreateThumbnailAtIndex(image, 0, nil)
    thumb
  end

  def numberOfRowsInTableView(view)
    100
  end

我正在拼杀是什么缺少的步骤是得到thumbnailImage方法为我提供的东西,可以是一个适当的数据对象从数据源返回。

任何帮助惊人地理解。

BTW:IknowIknowIknow,我应该使用的MacRuby但它并不在我的32位酷睿运行。不幸的是

有帮助吗?

解决方案

  

我绕过一个模型...

不要那样做。在可可,很容易做的事情有比没有的典范。

  

我正在拼杀是什么缺少的步骤是得到thumbnailImage方法为我提供的东西,可以是一个适当的数据对象从数据源返回。

CGImageSourceCreateThumbnailAtIndex返回一个CGImage。您需要tableView_objectValueForTableColumn_row_返回一个NSImage中。因此,使用NSImage中的initWithCGImage_size_方法。

如果您正在运行Leopard,该方法不可用,所以你需要创建一个NSBitmapImageRep与CGImage代替,然后创建正确大小的NSImage中,并且表示添加到它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top