2014-10-07 2 views
0

둥근 사각형을 구현하는 가장 좋은 방법을 찾으려고합니다 (예 : 아이폰 아이콘처럼). UIBezierPath를 사용하여 내 검색을 제안했습니다.잘못된 컨텍스트 0x0을 UIBezierPath로 수정하는 방법은 무엇입니까?

UIBezierPath* path = [UIBezierPath 
         bezierPathWithRoundedRect: CGRectMake(10, 10, 120, 120) 
         cornerRadius: 5]; 
[[UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:1.0] setFill]; 
[path stroke]; 
[path fill]; 

가 지금은 몇 가지 "... 잘못된 컨텍스트 0x0을 얻을 : 나는 기본적으로 새로운 엑스 코드 템플릿 (단일보기 응용 프로그램)을 만들어 그 클래스를 테스트하기 위해

단지의 ViewController의있는 viewDidLoad에서 다음 줄을 추가 오류...". 먼저 컨텍스트를 설정해야한다고 가정합니다. 그러나 어떻게해야합니까? 그렇지 않으면 오류를 수정하지 않습니까?

오류에 대한 내 검색에서 몇 게시물이 올랐습니다. 불행히도 그들 모두는 다소 복잡한 코딩과 관련이있는 것처럼 보였습니다. 나는 여기에 아주 기본적인 오해가 있음을 확신하지만.

감사합니다.

+0

[Quartz 2D Programming Guide] (https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/Introduction/Introduction.html#//apple_ref/doc/uid/)를 읽어 보는 것이 좋습니다. TP30001066). – Desdenova

+0

@Desdenova 감사합니다! 그것은 좋아 보인다 - 나는 그것을 점검 할 것이다. – McMini

답변

2

이를 사용하고 다른 사람에게 도움이되는 경우는보기

UIBezierPath *maskpath=[UIBezierPath bezierPathWithRoundedRect:view1.bounds 
    byRoundingCorners:UIRectCornerBottomLeft|UIRectCornerBottomRight 
    cornerRadii:CGSizeMake(10.0,10.0)]; 

    CAShapeLayer *maskLayer=[CAShapeLayer layer]; 

    maskLayer.frame=view1.bounds; 

    maskLayer.path=maskpath.CGPath; 

    [view1.layer addSublayer:maskLayer]; 
+0

이것은 매우 잘못된 것입니다. 모서리가 둥근 'CAShapeLayer'를 그리려면 레이어를 마스크 할 필요가 없습니다. – Desdenova

+0

빠른 답변 주셔서 감사합니다. 분명히 문제는 내가 바라는 것보다 어렵습니다. 나는 당신의 코드를 이해하고 다시보고하려고 노력할 것입니다 ... – McMini

+0

@Desdenova 그러면 어떻게 둥근 모서리처럼 볼 수 있을까요? –

0

을 층에서 그 할당 할 수 있습니다 : johnykumar에서 제공하는 코드와 유사한 주제의 다른 게시물의 기준 :

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor blackColor]; 
    CGRect frame = CGRectMake(50.0, 50.0, 150.0, 150.0); 
    CGFloat radius = 20.0; 
    UIView *frontView = [[UIView alloc] initWithFrame:frame]; 
    frontView.backgroundColor = [UIColor redColor]; 
    CAShapeLayer * maskLayer = [CAShapeLayer layer]; 
    maskLayer.path = [UIBezierPath bezierPathWithRoundedRect:frontView.bounds 
              byRoundingCorners:UIRectCornerAllCorners 
               cornerRadii:CGSizeMake(radius,  radius)].CGPath; 
    frontView.layer.mask = maskLayer; 
    [self.view addSubview:frontView]; 
}