2012-02-21 78 views
1

這是我的代碼:爲什麼我的CoreGraphics形狀不顯示邊框?

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextClearRect(context, rect); 

CGContextSetFillColorWithColor(context, [BUTTON_COLOR CGColor]); 
CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]); 
CGContextSetLineWidth(context, 1); 

int radius = CORNER_RADIUS; 

CGContextMoveToPoint(context, 0, self.frame.size.height/2); 
CGContextAddLineToPoint(context, POINT_WIDTH, self.frame.size.height); 
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width - radius, 
          rect.origin.y + rect.size.height); 
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, 
        rect.origin.y + rect.size.height - radius, radius, M_PI/2, 0.0f, 1); 
CGContextAddLineToPoint(context, rect.origin.x + rect.size.width, rect.origin.y + radius); 
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + radius, 
        radius, 0.0f, -M_PI/2, 1); 
CGContextAddLineToPoint(context, POINT_WIDTH, 0); 
CGContextAddLineToPoint(context, 0, self.frame.size.height/2); 

CGContextClosePath(context); 
CGContextDrawPath(context, kCGPathFillStroke); 

爲什麼不畫邊框形狀?

編輯:現在它繪製形狀,由於改變的最後一行,但它吸引額外的線周圍,像這樣:

http://cl.ly/0u0e051a060m161u0n08

+0

鏈接圖片可能會有所幫助。 – dasblinkenlight 2012-02-21 17:41:24

回答

3

使用CGContextDrawPath(context, kCGPathFillStroke)而不是CGContextFillPath()CGContextStrokePath()

事情是,在第一次調用CGContextFillPath()CGContextStrokePath()後,上下文的路徑被清除,所以第二個調用沒有可用的路徑。

+0

這會畫出線條,但問題在於,它也會在形狀周圍繪製它,如下所示:http://cl.ly/0u0e051a060m161u0n08 – Andrew 2012-02-21 17:51:27

+0

修正了它。謝謝。 – Andrew 2012-02-21 17:59:36

+0

它適合我。你確定你沒有爲視圖(或其超視圖)設置角半徑和邊框嗎?外部邊界絕對是在其他地方繪製的。 – Costique 2012-02-21 17:59:49