2017-05-19 4 views
1

저는 Mac 앱에서 작업 중이며 4 개의 둥근 모서리가있는 사용자 정의 NSView가 필요합니다. 내가 시도한 모든 것은 아무 결과도 산출하지 않거나, 단지 NSView의 botton 두 가장자리를 만곡시킵니다. NSView의 네 모서리를 모두 구부릴 수 있습니까?NSView - setCornerRadius 모든 네 모퉁이를 커브로 만듭니다.

맞춤 클래스를 만들려고했는데 결과가 전혀 산출되지 않는 initWithFrame 메서드를 사용했습니다. 나는 다음 drawRect 방법을 시도하는 곡선만을 botton을 두 코너 :

-(void)drawRect:(NSRect)dirtyRect { 
    [super drawRect:dirtyRect]; 

    [self setWantsLayer:YES]; 
    [self.layer setFrame:self.frame]; 
    [self.layer setMasksToBounds:YES]; 
    [self.layer setCornerRadius:10.0f]; 
} 

어떻게 내가 곡선의 네 모서리?를 Mac을 개발하는 것이 iOS보다 훨씬 어려운 이유는 누구나 알 수 있습니다. 왜 가장 기본적인 작업조차도 항상 사용자 정의 클래스가 필요합니다 (예 : NSView 배경색 설정 또는 UIViewAnimation 등가 실행).

시간 내 주셔서 감사합니다.

답변

3

이 세 줄이 나에게 둥근 모서리와의 ViewController의 viewDidLoad에 스토리 보드에서 콘센트로 연결 유형 NSViewtestView 빨간색 배경을주고, 어떤 서브 클래스는 필요하지 :

_testView.wantsLayer = YES; 
_testView.layer.backgroundColor = [NSColor redColor].CGColor; 
_testView.layer.cornerRadius = 10.; 

편집 다음 행 때문에 일부 모서리가 둥글어지는 것은 아닙니다.

[self.layer setFrame:self.frame]; 

기본적으로 당신은이 라인 적절한 계층 프레임을 설정할 필요하지 않은 : 당신이 명시 적으로 계층 프레임을 설정하려는 경우

[self setWantsLayer:YES]; 

, 당신은 차이에 대해

[self.layer setFrame:self.bounds]; 

읽기를 사용하려면 framebounds 사이 위 코드는 drawRect:에서도 작동합니다.

+0

감사합니다. 저에게 도움이되었는데 왜 하위 클래스 화가 작동하지 않았는지 모르겠습니다. 어쨌든 고마워. – Supertecnoboff

+1

@Supertecnoboff 내 수정 된 답변보기 – schmidt9

관련 문제