我需要將來自NSProgressIndicator的圖像放入NSOutlineView單元格。我已經寫了代碼,做這行確定的指標和它的作品好了:從NSProgressIndicator獲取NSImage
NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0, 0, 16, 16)];
[progressIndicator setStyle:NSProgressIndicatorSpinningStyle];
[progressIndicator setIndeterminate:NO];
[progressIndicator setMaxValue:100.0];
[progressIndicator setDoubleValue:somePercentage];
NSImage *updateImage = [[NSImage alloc] initWithData:[progressIndicator dataWithPDFInsideRect:[progressIndicator frame]]];
[progressIndicator release];
return [updateImage autorelease];
我試圖修改代碼也給我不確定的指針影像。但對於不確定的情況,我總是會得到一張空白的16x16圖像。 (我已經通過在每種情況下將圖像寫入文件來確認這一點,確定的情況給了我進度指示器圖像,不確定的情況始終是16x16白色正方形)。
修改後的代碼是:
if(self.lengthUnknown)
{
NSProgressIndicator *progressIndicator = [[NSProgressIndicator alloc] initWithFrame:NSMakeRect(0, 0, 16, 16)];
[progressIndicator setStyle:NSProgressIndicatorSpinningStyle];
[progressIndicator setIndeterminate:YES];
NSImage *updateImage = [[NSImage alloc] initWithData:[progressIndicator dataWithPDFInsideRect:[progressIndicator frame]]];
[progressIndicator release];
return [updateImage autorelease];
}
else
{
// Same code as the first listing, this case works fine
}
做不確定的進度指標使用某種類型的繪圖導致-dataWithPDFInsideRect:是無法捕捉到自己的形象?
的更多信息:我試着設置進度指示器不使用螺紋動畫,以及試圖通過NSImage中的lockFocus方法來獲取內容如下建議,但那些都嘗試了一定的作用。
Dave在下面提到的進度指示器單元代碼(AMIndeterminateProgressIndicatorCell)是一個很好的解決方法,但我仍然想知道爲什麼我不能使用與確定模式一起使用的相同技術。