我正在尝试显示NSTableView:
|缩略图| filename |
我在IB中创建了NSTableView并将其委托给了一个类。在课堂上,我绕过了一个模型,只是为了获得POC实现并创建了数据源委托方法。他们填充文本单元格就好了。但是,现在我正处于第一个单元格需要包含图像的小缩略图的步骤。
我想要做的事情(而且我确定它很简单)就是抓住图像图标 - 假设所有文件都是jpeg并嵌入缩略图是公平的,并将该图标缩放到64x64进入表格单元格。有很多关于如何生成缩略图的代码,但是我没有看到太多让我使用代码的代码。这就是我所拥有的:
# 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:我知道我知道,我应该使用MacRuby,但它不能在我的32位Core Duo上运行。不幸的是答案 0 :(得分:0)
我绕过了一个模特......
不要那样做。在Cocoa中,使用模型比使用模型更容易。
我正在努力解决的问题是让thumbnailImage方法为我提供一些可以从数据源返回的适当数据对象的缺失步骤。
CGImageSourceCreateThumbnailAtIndex
返回CGImage。您需要tableView_objectValueForTableColumn_row_
才能返回NSImage。因此,请使用NSImage的initWithCGImage_size_
方法。
如果您正在运行Leopard,则该方法不可用,因此您需要使用CGImage创建NSBitmapImageRep,然后创建正确大小的NSImage并将该表示添加到其中。