2012-01-14 5 views
4

둥근 사각형 모양을 가진 간단한 사용자 정의 경계선없는 NSWindow 서브 클래스가 있습니다.NSScrollView에서 둥근 모서리 자르기

이 창의 내용보기에서 NSScrollView를 추가했습니다.

NSScrollView에서 NSWindow의 둥근 사각형 모양으로 문서 뷰를 자르려면 어떻게해야합니까?

NSScrollView를 서브 클래 싱하여 drawRect :를 재정의하고 super를 호출하기 전에 클리핑 패스를 추가했습니다. 나는 또한 같은 기법으로 문서 뷰와 클립 뷰를 서브 클래 싱하려고 시도했지만 클립으로 가져올 수는 없다.

자세히 알아보기, 이것은 탄력적 인 스크롤 동작을하는 라이온입니다.

답변

4

훨씬 손보는 후, 나는 단지 그것을 지지층을 제공하고 제공되는 레이어의 모서리 반경 를 설정하여 NSScrollView 년대는 둥근 모서리를 가지고 할 수 있다는 것을 발견 당신은 또한 동일한 내부 NSClipView입니다 않습니다. 두 가지 모두 필요합니다. 실제로 클립보기이므로 NSScrollView의 문서보기에 볼 수있는 창을 제공합니다.

NSScrollView * scrollView = ...; 

// Give the NSScrollView a backing layer and set it's corner radius. 
[scrollView setWantsLayer:YES]; 
[scrollView.layer setCornerRadius:10.0f]; 

// Give the NSScrollView's internal clip view a backing layer and set it's corner radius. 
[scrollView.contentView setWantsLayer:YES]; 
[scrollView.contentView.layer setCornerRadius:10.0f]; 
+2

주,이 NSScrollView의를 NSTextView의 포함 그것에 대해 작동하지 않습니다. 이 경우 마스킹 레이어 방식으로 되돌려 야합니다. – Dalmazio

+0

참고 사항 : http://stackoverflow.com/questions/5268467/how-can-i-get-nsscrollview-to-respect-a-clipping-path/9989911#9989911 – Dalmazio

0

더 나은 IMO : 그러나

scrollView.wantsLayer = true 
scrollView.layer?.masksToBounds = true 
scrollView.contentView.wantsLayer = true 
scrollView.contentView.layer?.masksToBounds = true