Rubycocoa : nstableView의 썸네일 이미지
-
19-09-2019 - |
문제
나는 nstableView를 표시하려고합니다.
| 썸네일 | 파일 이름 |
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
내가 손상하고있는 것은 누락 된 단계가 썸네일 메소드를 가져와 데이터 소스에서 반환하기에 적절한 데이터 객체가 될 수있는 것을 제공하는 것입니다.
모든 도움은 놀랍게도 감사합니다.
BTW : iknowiknowiknow, 나는 MacRuby를 사용해야하지만 32 비트 코어 듀오에서 실행되지는 않습니다. 슬프게도.
해결책
나는 모델을 우회했다…
그렇게하지 마십시오. 코코아에서는 모델이없는 것보다 모델로 일을하는 것이 더 쉽습니다.
내가 손상하고있는 것은 누락 된 단계가 썸네일 메소드를 가져와 데이터 소스에서 반환하기에 적절한 데이터 객체가 될 수있는 것을 제공하는 것입니다.
CGImageSourceCreateThumbnailAtIndex
cgimage를 반환합니다. 당신은 필요합니다 tableView_objectValueForTableColumn_row_
nsimage를 반환합니다. 따라서 nsimage를 사용하십시오 initWithCGImage_size_
방법.
Leopard를 실행중인 경우 해당 방법을 사용할 수 없으므로 대신 CGIMAGE와 함께 NSBITMAPIMAGEREP를 생성 한 다음 올바른 크기의 NSimage를 생성하고 해당 표현을 추가해야합니다.