2013-10-28 1 views
0

이것은 바보 같은 질문처럼 보였습니다. 아니면 그냥 피곤하지만 원하는 결과를 얻지 못하고있는 것 같습니다. 나는 내 라인을 볼 수 없기 때문에 나는 어떤 결과를 얻고 있는지 확신하지 못한다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?Objective-C - 중심에서 수직선을 그리는 방법

- (void)drawCenterPlus 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 20); 
    [[UIColor redColor] setStroke]; 

    CGPoint hStart; 
    CGPoint hEnd; 
    CGPoint vStart; 
    CGPoint vEnd; 

    hStart.x = self.center.x - 20.0; 
    hStart.y = self.center.y; 
    hEnd.x = self.center.x + 20.0; 
    hEnd.y = self.center.y; 
    vStart.x = self.center.x; 
    vStart.y = self.center.y - 20.0; 
    vEnd.x = self.center.x; 
    vEnd.y = self.center.y + 20.0; 

    //line 1 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, hStart.x, hStart.y); 
    CGContextAddLineToPoint(context, hEnd.x, hEnd.y); 
    CGContextStrokePath(context); 

    //line 2 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, vStart.x, vStart.y); 
    CGContextAddLineToPoint(context, vEnd.x, vEnd.y); 
    CGContextStrokePath(context); 
} 

감사합니다.

---------------------------------------------- --------- 기타 정보 ------------------------------------- -----

실제로 이것은 viewDidLoad에서 호출됩니다. 나는보기의 중심에 "+"를 그 으려고하고있다. 보기를 다른 색상으로 만들었 기 때문에 "+"를 볼 수 있습니다. "+"는 검은 색으로 그릴 수 있습니다. 단지 그것을 볼 수 있기를 원합니다. 예, 화면에 텍스트를 넣을 수는 있지만 궁극적으로 사각형 내부에 텍스트를 그려야합니다.

드로잉이 서브 뷰 뒤에 숨어 있는지 보려면 빈보기로 다시 시도하겠습니다. 우리가 볼거야. 도와 줘서 고마워.

---------------------------------------------- --------- 최신 방법 --------------------------------------- --------

확인. 하나의보기가있는 새 프로젝트로 화면 중앙에 빨간색 "+"만 표시됩니다. 그러나 아무것도 표시되지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

@implementation TESTViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 20); 
    [[UIColor redColor] setStroke]; 

    CGPoint hStart; 
    CGPoint hEnd; 
    CGPoint vStart; 
    CGPoint vEnd; 

    hStart.x = self.view.center.x - 20.0; 
    hStart.y = self.view.center.y; 
    hEnd.x = self.view.center.x + 20.0; 
    hEnd.y = self.view.center.y; 
    vStart.x = self.view.center.x; 
    vStart.y = self.view.center.y - 20.0; 
    vEnd.x = self.view.center.x; 
    vEnd.y = self.view.center.y + 20.0; 

    //line 1 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, hStart.x, hStart.y); 
    CGContextAddLineToPoint(context, hEnd.x, hEnd.y); 
    CGContextStrokePath(context); 

    //line 2 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, vStart.x, vStart.y); 
    CGContextAddLineToPoint(context, vEnd.x, vEnd.y); 
    CGContextStrokePath(context); 
} 
+1

안녕하세요 @ 루시. 컨텍스트가 조금 더 좋을 것입니다. 해당 방법은 어디에 구현됩니까? 어떻게 부르죠? – LuisCien

+0

@ 루이스 시엔 - 일하러 돌아올 때 내일 더 보내 드리겠습니다. 고맙습니다. :-) – Patricia

+0

'viewDidLoad'에서 그릴 수 있습니까? 네가 할 수 있다고 생각하지 않아. – trojanfoe

답변

1

확인 context의 값 - 내가 추측하고있어이 nil 수 있습니다.

UIView 하위 클래스의 drawRect 메서드 안에이 코드를 삽입하면 유효한 컨텍스트가있는 것처럼 작동합니다.

또는 UIImage 컨텍스트를 직접 만들고 그 안에 도형을 그려서 이미지를 하위 뷰로 추가 할 수 있습니다. 예 : 이 시점에서 ... 당신은 기본적으로 당신이 십자가를 나타내는 정적 뷰 또는 이미지를 추가하려는 경우가 아니면, 드로잉 코드에이 코드를 추가 할 전무

- (void)drawCenterPlus { 

    UIGraphicsBeginImageContext(self.view.frame.size); 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 20); 
    [[UIColor redColor] setStroke]; 

    CGPoint hStart; 
    CGPoint hEnd; 
    CGPoint vStart; 
    CGPoint vEnd; 

    hStart.x = self.view.center.x - 20.0; 
    hStart.y = self.view.center.y; 
    hEnd.x = self.view.center.x + 20.0; 
    hEnd.y = self.view.center.y; 
    vStart.x = self.view.center.x; 
    vStart.y = self.view.center.y - 20.0; 
    vEnd.x = self.view.center.x; 
    vEnd.y = self.view.center.y + 20.0; 

    //line 1 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, hStart.x, hStart.y); 
    CGContextAddLineToPoint(context, hEnd.x, hEnd.y); 
    CGContextStrokePath(context); 

    //line 2 
    CGContextBeginPath(context); 
    CGContextMoveToPoint(context, vStart.x, vStart.y); 
    CGContextAddLineToPoint(context, vEnd.x, vEnd.y); 
    CGContextStrokePath(context); 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
    [self.view addSubview:imageView]; 

} 
0

CGContextRef context = UIGraphicsGetCurrentContext();이 될 것입니다.

drawRect: 메서드가 호출 될 때 자동으로 발생하는 포커스가있는 경우를 제외하고 현재 Context는 뷰 객체가 아닙니다.

이미지에 그림을 그릴 수 있고 이미지보기에 추가 할 수 있습니다.로드 할 때 수행 할 수 있으며 그 시점부터 자동으로 드로잉이 수행됩니다.