2011-07-29 5 views
8

는 다음과 같은 이미지를 살펴 보자 :UIButton 컨트롤에서 날카로운 사각형 모서리를 제거하는 방법?

enter image description here

당신은 가장자리가 날카로운 사각형이고 그들은 둥근 모서리 버튼에서 오는 볼 수 있듯이. 가장자리를 표시하지 않고 둥근 버튼 만 표시하려면 어떻게해야합니까?

UPDATE (솔루션) :

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.stopButton.bounds 
             byRoundingCorners:UIRectCornerAllCorners 
             cornerRadii:CGSizeMake(12.0, 12.0)]; 

// Create the shape layer and set its path 
CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = self.stopButton.bounds; 
maskLayer.path = maskPath.CGPath; 
// Set the newly created shape layer as the mask for the image view's layer 
self.stopButton.layer.mask = maskLayer; 

새로운 문제 :이 코드는 나에게 startButtonRound.layer에 오류가 있습니다

나는 둥근 모서리를 달성하기 위해 다음 코드를 사용했다. cornerRadius 라인.

UIButton *roundStartButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
     roundStartButton.frame = CGRectMake(10, 10, 100, 20); 
     [roundStartButton setBackgroundImage:[UIImage imageNamed:@"green_gradient.jpg"] forState:UIControlStateNormal]; 

     roundStartButton.layer.cornerRadius = 12.0; 
UIBarButtonItem *startButton = [[UIBarButtonItem alloc] initWithCustomView:roundStartButton]; 

답변

17

당신은 혼자의 CALayer이 할 수 있습니다 : 당신은 또한 QuartzCore 프레임 워크를 포함 할 및 프레임 워크가 자신의 헤더를 포함합니다

CALayer *myLayer = [CALayer layer]; 
[myLayer setMasksToBounds:YES]; 
[myLayer setCornerRadius:5.0f]; 
[myLayer setBorderWidth:1.0f]; 
[myLayer setBorderColor: [[UIColor blackColor] CGColor]]; 
[myLayer setBackgroundColor: [[UIColor whiteColor] CGColor]]; 

.

self.stopButton.layer.cornerRadius = 12.0; 

하지만

self.stopButton.opaque = NO; 
self.stopButton.backgroundColor = [UIColor clearColor]; 

을 시도 않았다

#include <QuartzCore/QuartzCore.h> 

희망이 내가 함께 수행 할 수있는 모든 생각

+0

[버튼 레이어] setCornerRadius : 5.0f]를 시도했습니다. 버튼에 아무런 영향을주지 않았습니다. – azamsharp

+0

레이어를 둥근 모서리로 잘라내려면 MasksToBounds를 yes로 설정해야 할 수도 있습니다. –

+0

cornerRadius가 작동하도록 UIButton을 IBOutlet으로 선언해야합니까? 업데이트 된 원래 게시물을 참조하십시오. – azamsharp

5

에게 도움이?

+0

감사 빌! 그게 잘됐다! 나는 무엇을했는지 모르지만 이제는 cornerRadius 없이도 가장자리를 보여주지 못했습니다. 그러나 당신의 코드는 제 5-6 행의 코드를 제거했습니다. – azamsharp

+0

UIButton.layer.cornerRadius가 작동하지 않습니다. 그것은 오류를 반환하지만 backgroundColor를 clear로 설정하고 opaque를 NO로 설정하면됩니다. – okysabeni

+0

@Yko, 말 그대로'UIButton.layer.cornerRadius'를 사용하고 있습니까? 클래스의 인스턴스가 아니라 클래스에 액세스하려고합니다. – bshirley

0

모양을 UIButton bckground 색상을 '흰색'으로 설정했습니다. 그것을 'Clear Color'로 만드십시오.

관련 문제