2013-07-31 2 views
1

저는 iOS 개발자이며 최근에 Mac OSX 용 데스크톱 APP를 프로그래밍하고 있습니다. View의 OSX 구성 요소에 대한 경험이 아직 많지 않으므로 어리석은 질문이나 쉬운 문제 일 수 있습니다. 그러나이 문제에 대해 조금 연구를했으며 아직 해결 방법을 찾지 못했습니다. 그 나의 NSPopover에 사용되는 콘텐츠의 ViewController의보기로 사용된다, 나는 NSView의의 사용자 지정 전문성을 가지고NSComboBox - 배경 선택시 문제가 발생했습니다.

:

다음은 문제입니다.

"PopoverBackgroundView"라고 불리는이 뷰 내에서 drawRect 내부에 빨간색 배경을 칠한 다음 다른 작은 rect를 계산하고이 회색과 같은 색으로 칠했습니다.

- (void)drawRect:(NSRect)dirtyRect 
{ 
    [[NSColor colorWithDeviceRed:174/255.0 green:72/255.0 blue:72/255.0 alpha:1.0] setFill]; 
    NSRectFill(dirtyRect); 

    [[NSColor colorWithDeviceRed:51/255.0 green:51/255.0 blue:51/255.0 alpha:1.0] setFill]; 
    NSRectFill(NSMakeRect(BORDER_WIDTH, BORDER_WIDTH, dirtyRect.size.width - 2*BORDER_WIDTH, dirtyRect.size.height - 2*BORDER_WIDTH)); 
} 

그래서, PopoverBackgroundView.m 안에 내가 프로그램 적 NSComboBox을 만드는거야 : 여기에 코드입니다. 이으로 comboBox는 숫자 1에서 10까지 내가 그것을 할당 할 때, 모든 것이 잘 보인다해야합니다 :

enter image description here

문제는 내가 콤보 상자 내부에 옵션을 선택한 후, 그 배경은 어떻게 든입니다이다 "멀리 간다"가되었다 투명, 내가 알고, 같이가되지 않습니다

enter image description here

내가 뭔가를 선택 직후 나타난 NSComboBox 주위에 빨간색 같은 프레임 (뷰의 배경 색상을),주의하시기 바랍니다. 나는 '수정'이 '선택 배경 "할 수있는 방법

- (id)initWithFrame:(NSRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 

     (...) 

     self.comboBox = [[NSComboBox alloc] initWithFrame:CGRectMake(15, frame.size.height - 55, 90, 25)]; 
     self.comboBox.delegate = self; 
     [self.comboBox setDrawsBackground:NO]; 
     [self.comboBox setSelectable:YES]; 
     [self.comboBox setEditable:NO]; 

     for (int i = 1; i<=10; i++) 
     { 
      NSString *mystr = [NSString stringWithFormat:@"%d", i]; 
      [self.comboBox addItemWithObjectValue:mystr]; 
     } 

     [self addSubview:self.comboBox]; 

    } 

    return self; 
} 

어떤 생각 :

는 여기에 내가 콤보 상자와 그것을 초기화 할당 해요 코드입니까? 내가 원하는 모든 것은 정상 상태와 같게 선택된 상태입니다. 이자형. , comboBox는 선택 후에도 항상 첫 번째 이미지와 같아야합니다.

할당 코드에 문제가 있습니까? 뭔가 미션? 나는 실제로 사용하지 않거나 초기화하지 않는 일부 속성 만 생각하지만 아직 찾을 수 없습니다.

미리 감사드립니다.

+0

질문을 이해할 수 없습니다. NSComboBox를 하나의 NSPopover 안에 만들면 무엇을 의미합니까? 콤보 박스 배경이 사라져 버렸다고합니다. 나는 그것을 보지 않는다. 그리고 나서 당신은 "어떻게 이걸로 내가 사라질 수 있니?"라고 말하죠. 정말로 사라지고 싶습니까? –

+0

더 구체적이고 모호한 단어를 변경하려고 질문을 편집했습니다. 부디. 너가 아직도 이해할 수없는 무언가가 있으면 나에게 말해라. –

답변

2

의견을 보내 주시면 마침내 문제를 해결할 수있었습니다.

정확히 이유는 모르겠지만, 문제는 모두 국경을 그릴 때의 이유입니다. drawRect. 어떻게 든,이 코드

[[NSColor colorWithDeviceRed:174/255.0 green:72/255.0 blue:72/255.0 alpha:1.0] setFill]; 
NSRectFill(dirtyRect); 

는 setFill 또는 NSRectFill이라면 모르는, 파단에 의해 전파되고 있었다. 그래서, NSCombobox의 "배경"은이 색으로 그려져 있습니다. 이 게시물을 본 후

:

- (void)drawRect:(NSRect)dirtyRect 
{ 
    NSBezierPath *background = [NSBezierPath bezierPathWithRoundedRect:self.bounds xRadius:10 yRadius:10]; 
    [[NSColor colorWithDeviceRed:174/255.0 green:72/255.0 blue:72/255.0 alpha:1.0] set]; 
    [background setLineWidth:10]; 
    [background stroke]; 
} 

을 내가 원하는대로 모든 것을, 지금은 잘 작동 : Adding border and Rounded Rect in the NSView 나는이 내 그리기 RECT을 변경했습니다. 자, 내 콤보 박스를 선택한 후에 이상한 배경이 그려지지 않았습니다.사람이 이전 코드와 무슨 일이 벌어지고 유장을 알고있는 경우

enter image description here

, 알려 주시기 바랍니다.