Tôi cần phải đưa hình ảnh từ NSProgressIndicator vào Ô NSOutlineView. Tôi đã viết mã để thực hiện điều này cho một chỉ báo xác định và nó hoạt động rất tốt:Nhận NSImage từ NSProgressIndicator
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];
Tôi đã cố gắng sửa đổi mã cũng cho tôi hình ảnh chỉ báo không xác định. Tuy nhiên đối với trường hợp không xác định, tôi luôn nhận được hình ảnh 16x16 trống. (Tôi đã xác nhận điều này bằng cách viết hình ảnh vào một tệp trong mỗi trường hợp, trường hợp xác định mang lại cho tôi hình ảnh chỉ báo tiến trình, trường hợp không xác định luôn là hình vuông màu trắng 16x16).
Mã sửa đổi là:
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
}
Do chỉ số tiến bộ không xác định sử dụng một số loại bản vẽ gây -dataWithPDFInsideRect: là không có khả năng chụp ảnh của họ?
Thông tin thêm: tôi đã cố gắng thiết lập các chỉ số tiến bộ không sử dụng hình ảnh động ren cũng như cố gắng để lấy các nội dung thông qua phương pháp lockFocus NSImage như gợi ý dưới đây nhưng không ai trong số những nỗ lực tạo ra một sự khác biệt.
Mã chỉ báo tiến trình mà Dave đề cập bên dưới (AMIndeterminateProgressIndicatorCell) là giải pháp tuyệt vời, nhưng tôi vẫn muốn biết tại sao tôi không thể sử dụng cùng một kỹ thuật hoạt động với chế độ xác định.