2014-03-13 186 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

您需要本地座標。更改

CGContextAddRect(context, self.frame); 

CGContextAddRect(context, self.bounds); 
+0

是的,我剛剛意識到這一點。但無論如何,謝謝! – Maria

+0

如果我的答案解決了這個問題,請接受它。有人可以找到這個搜索解決方案的類似問題。 – Avt

0
  1. 你沒有指定子視圖

  2. 類名,爲什麼不試試這樣

    anyView.layer.borderColor = [UIColor redColor].CGColor; 
    anyView.layer.borderWidth = 5.0f; 
    
  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

Y o尚未將path添加到您的上下文中

-(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(60,170,200,80)''點。檢查 –

+0

我已經使用self.frame(應使用self.bounds,但現在沒關係)。所以CGRectMake是不必要的。 – Maria

0

解決! 問題出在CGContextAddRect的self.frame中。它必須是self.bounds來繪製我的視圖。