NIB에서 생성되고 NSMenuItem의보기로 할당 된 사용자 지정 NSView가 있는데,이 코드는 위의 코드에서 뷰를 만들고 싶습니다. 내가 당신에게 확신시킬 수있는 좋은 이유).하지만 열심히 보이지는 않았지만, 실제로는 그림이 그려지지 않습니다.코코아 - NSMenuItem의 사용자 지정 NSView가 그려지지 않습니다.
"setNeedsDisplay :"메시지를 보내더라도 필요시보기를 그리기 위해 이전에 호출 된 "drawRect :"메시지가 더 이상 호출되지 않습니다.
이미지로보기를 초기화하고 메뉴 항목의 크기가 맞지만 이미지가 없기 때문에 작동하는 것처럼 보이는 크기 (보기의 크기)를 설정합니다.
여기에 어떤 일이 벌어 질 수 있습니까?
이보기 초기화하기 위해서 코드 :
-(id)initWithImage:(NSImage*)image
{
self = [super init];
if (self != nil)
{
self.imageToDisplay = image;
// this bit does get called and resizes the view to match the image size
NSRect imageBounds = NSMakeRect(0.0f, 0.0f, imageToDisplay.size.width, imageToDisplay.size.height);
[self setBounds:imageBounds];
[self setFrame:imageBounds];
[self setHidden:NO];
[self setAlphaValue:1.0f];
[self setAutoresizesSubviews:YES];
}
return self;
}
을 그리고 이것은
// this is never called
-(void)drawRect:(NSRect)dirtyRect
{
if (imageToDisplay == nil)
return;
NSRect imageBounds = NSMakeRect(0.0f, 0.0f, imageToDisplay.size.width, imageToDisplay.size.height);
[self setBounds:imageBounds];
[self setFrame:imageBounds];
[imageToDisplay drawInRect:[self bounds]
fromRect:imageBounds
operation:NSCompositeSourceAtop
fraction:1.0f];
}
호출되지 않는 도면 뷰의 코드이며,이 메뉴 항목에 대한 코드입니다 보기를 추가합니다.
-(void)awakeFromNib
{
MyCustomView* view = [[MyCustomView alloc] init];
[self setView:view];
// i would have expected the image to get drawn at this point
[view setNeedsDisplay:YES];
}
스팟! 대단히 감사합니다 :) – Nippysaurus
기꺼이 도와 드리겠습니다. –