2013-05-01 118 views
0

我有一個自定義UIView,我想在drawRect:方法中手動繪製。我希望視圖只是一個黑色矩形,只有一個圓角和一個紅色邊框。我如何實現drawRect:繪製這個視圖?iOS用底部邊框繪製自定義視圖

Sample UIView

+0

我試圖創建一個CAShapeLayer並通過添加[self.layer addSublayer:shapeLayer]但我無法弄清楚如何創造更多不只是黑色的形狀 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2013-05-01 05:31:40

回答

1

我會做類似

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextClearRect(context, rect); 

CGContextSaveGState(context); 

CGFloat cornerRadius = 10.0f; 

CGFloat redBorderHeight = 4.0f; 

CGFloat minx = 0.0f; 
CGFloat miny = 0.0f; 
CGFloat midx = rect.size.width/2; 
CGFloat midy = rect.size.height/2; 
CGFloat maxx = rect.size.width; 
CGFloat maxy = rect.size.height; 

CGMutablePathRef path = CGPathCreateMutable(); 
CGPathMoveToPoint(path, nil, minx, midy); 
CGPathAddArcToPoint(path, nil, minx, miny, midx, miny, 0); 
CGPathAddArcToPoint(path, nil, maxx, miny, maxx, midy, 0); 
CGPathAddArcToPoint(path, nil, maxx, maxy, midx, maxy, 0); 
CGPathAddArcToPoint(path, nil, minx, maxy, minx, midy, cornerRadius); 
CGPathCloseSubpath(path); 

CGContextAddPath(context, path); 

CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor); 

CGContextDrawPath(context, kCGPathFill); 

CGContextRestoreGState(context); 

midy = (rect.size.height-redBorderHeight)/2; 
maxy = rect.size.height-redBorderHeight; 

CGMutablePathRef path2 = CGPathCreateMutable(); 
CGPathMoveToPoint(path2, nil, minx, midy); 
CGPathAddArcToPoint(path2, nil, minx, miny, midx, miny, 0); 
CGPathAddArcToPoint(path2, nil, maxx, miny, maxx, midy, 0); 
CGPathAddArcToPoint(path2, nil, maxx, maxy, midx, maxy, 0); 
CGPathAddArcToPoint(path2, nil, minx, maxy, minx, midy, cornerRadius); 
CGPathCloseSubpath(path2); 

CGContextAddPath(context, path2); 

CGContextSetFillColorWithColor(context, [UIColor blackColor].CGColor); 

CGContextDrawPath(context, kCGPathFill); 
+0

謝謝,我會試試這個。我在哪裏可以瞭解更多關於這些繪圖方法這是CoreGraphics?對不起,我是iOS開發新手。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 2013-05-01 05:32:56

+2

蘋果文檔其實很不錯https://developer.apple.com/library/mac/#documentation/graphicsimaging/conceptual/drawingwithquartz2d/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007533-SW1 – joao 2013-05-01 05:39:11