기존 NSView에 NSView를 추가하려하지만 일부 이상한 이유로 실패합니다. 나는 이것을하고있다 :drawRect를 오버라이드하지 않으면 NSView가 보이지 않는데 superview의 레이어에서 setMasksToBounds가 NO 인 경우에도 클리핑됩니다.
_resizeView = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 10, 10)];
[_resizeView.layer setBorderWidth:2];
[_resizeView.layer setBorderColor:[NSColor purpleColor].CGColor];
[_resizeView.layer setBackgroundColor:[NSColor blackColor].CGColor];
[_resizeView setAutoresizingMask:NSViewNotSizable | NSViewMinXMargin | NSViewMaxYMargin];
[self addSubview:_resizeView];
자동 크기 조정 마스크를 제거하려고 시도했지만 여전히 작동하지 않는다. 그럼 NSView에서 NSButton으로 바꿨고, 마술처럼 작동하고보기가 보입니다.
drawRect를 재정의하는 NSView의 하위 클래스를 만든 다음 갑자기 표시되지만 그 경로에 대해서만 그릴 수 있습니다 (예 : super drawRect를 호출합니다). 여기서 무슨 일이 일어나고있는거야?
그래서 기본적으로 경계선이있는 상자를 만들었으므로 (배경색은 테스트 용이었습니다) 하위 클래스를 계속 사용할 수는 있지만 기존 뷰의 모서리에이를 추가하려고합니다. , 약간 튀어 나와, 그것을 추가하는보기의 기본 레이어에 대해 setMasksToBounds를 NO로 설정해도 마스크가 적용됩니다.
나는 여기에 미치겠다! 이 중 아무 것도 예상대로 작동하지 않는 이유는 무엇입니까? 메시지 : 뷰 객체 변화를 그리기 위해 사용되는 데이터 또는 상태의 뷰가 setNeedsDisplay를 보내야 할 때마다
setWantsLayer : 예 표시되지 않는 문제가 수정되었습니다. 그래도 클리핑 경험. –