내가 반올림하고 다음 코드를 사용하여 하나 개의 NSView의 파생 클래스에서 그림자하기 위해 노력하고있어에서 반올림하는 경우 :이 반올림없고 그렇지 않은 경우그림자 가장자리는 NSView의
[graphHostView setWantsLayer:YES];
graphHostView.layer.shadowRadius = 5.0;
graphHostView.layer.shadowOffset = NSMakeSize(10.0f, -10.0f);
graphHostView.layer.shadowOpacity = 0.5f;
graphHostView.layer.needsDisplayOnBoundsChange = YES;
graphHostView.layer.masksToBounds = YES;
graphHostView.layer.cornerRadius = 10.0;
[graphHostView.layer setNeedsLayout];
섀도 잉은 노력하고 있습니다 반올림이 1 위 또는 2 위일 경우 중요합니다. 또한 코드를 사용하여 간접적으로 그림자를 제거 할 수 있습니다.
NSShadow * myShadow = [[NSShadow alloc] init]; [myShadow setShadowOffset : NSMakeSize (10.0f, -10.0f)]; [myShadow setShadowBlurRadius : 3.0]; [graphHostView setShadow : myShadow]; [myShadow set];
완전히 동일한 효과. 디스플레이, setNeedsLayout 및 기타 속성 및 메서드의 모든 조합을 시도하고 아무것도 작동하지 않습니다.
이 결국 NSWindow 표시가 둥근 그림자가되어 작동하지 않습니다, 나에게 믿을 수 없을 정도로 보인다 ...
내가 함께 지지층에도 그림자를 적용하려 한 것을 추가 할 필요가 연상 되 같은 결과. masksToBounds는 경계 밖의 모든 것을 예상대로 마스크하기 때문에 동일한 레이어에 그림자를 표시 할 수 없다고 생각하는 것이 합리적입니다. 그림자와 마스크를 설정하는 순서에는 결과가 없으므로 마스킹 이후에이 레이어에 나중에 추가 할 수있는 모든 것에 영향을줍니다.
그렇다면 질문은 여전히 가능합니다. 그림자가있는 다른 NSView를 전혀 구동하지 않으면 원하는 결과를 얻는 방법은 무엇입니까?
그것 때문에 masksToBounds이 (당신의 그림자의 드로잉을 방지합니까 = 거짓
graphHostView.layer.masksToBounds 경계 외부)? – jrturton
힌트를 보내 주셔서 감사합니다. 질문을 업데이트했습니다. :) – mbpro