2014-03-13 5 views
2

테두리가있는 사용자 지정 UIView를 만들고 싶습니다. 여기UIView drawRect 문제

- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 4.0); 
    CGContextSetStrokeColorWithColor(context, [[UIColor blueColor] CGColor]); 
    CGContextAddRect(context, self.frame); 
    CGContextStrokePath(context); 
} 

그리고 결과입니다 : enter image description here

이 그림에 세 UIView의 내 사용자 지정보기입니다,하지만 큰 UIView의 국경이 여기 내 코드입니다. 나는 왜 다른 사람들이 국경을 갖지 않는지 이해하지 못한다. 뭐가 잘못 되었 니?

+0

모든 'UIView'가 동일한 사용자 정의 클래스입니까? –

+0

일부 코드를 보여주십시오. –

+0

스토리 보드를 통해 확인합니다. 더 많은 코드가 없으며이 drawRect 메서드로 사용자 정의 클래스 만 있습니다 – Maria

답변

2

당신의 상황에 path을 추가하지 않았습니다.

CGContextAddRect(context, self.bounds); 
+0

그래, 그냥 실현했습니다. 하지만 어쨌든 고마워! – Maria

+0

내 대답이 문제를 해결하면 동의하십시오. 누군가가 유사한 문제에 대한이 게시물 검색 솔루션을 찾을 수 있습니다. – Avt

0
  1. 당신은 왜 당신이

    anyView.layer.borderColor = [UIColor redColor].CGColor; 
    anyView.layer.borderWidth = 5.0f; 
    
  2. 처럼 시도하지 않는 파단

  3. 에 대한 클래스 이름을 지정하거나 사용자 정의보기에이 방법을 추가하지 않은

    -(void)awakeFromNib{ 
    
        [super awakeFromNib]; 
    
        self.layer.borderColor = [UIColor redColor].CGColor; 
        self.layer.borderWidth = 5.0f; 
    
    } 
    
+0

무슨 뜻입니까? 하위보기의 클래스 이름을 지정하지 않으셨습니까? 이름을 BorderedView로 지정하고 스토리 보드의 모든 UIView에 클래스 이름을 지정했습니다. – Maria

+0

2와 3을 주셔서 감사합니다.하지만 예를 들어 상단 선을 사용하지 않고 전체 테두리를 만들 필요가 있습니다. – Maria

+0

보기 상단에 흰색 일반보기를 추가하면 필요에 따라 테두리가 숨겨집니다. –

0

오 당신은 로컬 좌표를 필요로

-(void)drawRect:(CGRect)rect 
{ 
    [super drawRect:rect]; 

    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGPathRef path = CGPathCreateWithRect(rect, NULL); 
    [[UIColor blueColor] setStroke]; 
    CGContextSetLineWidth(context, 4.0); 
    CGContextAddPath(context, path); 
    CGContextDrawPath(context, kCGPathFillStroke); 
    CGPathRelease(path); 
} 
+0

CGContextAddRect는 경로없이 그립니다. http://www.techotopia.com/index.php/An_iOS_7_Graphics_Tutorial_using_Core_Graphics_and_Core_Image – Maria

+0

나는 일반적으로 사용하는 대답을 제공했습니다. 'CGRect rectangle = CGRectMake (6017020080); '을 놓쳤다. –

+0

self.frame을 사용했는지 확인하십시오 (self.bounds를 사용해야하지만 지금은 상관 없습니다). 그래서 CGRectMake는 불필요합니다. – Maria

0

CGContextAddRect(context, self.frame); 

변경 해결! CGContextAddRect의 self.frame에 문제가있었습니다. 내 견해를 그려내는 것은 자기 자신이어야합니다.

관련 문제