iOS Draw Rectagle具有弯曲的末端

想象一个长矩形(可能大小为200×20)。 所有面都有直边。 在我的iOS应用程序中,这对我来说很容易绘制:

CGContextFillRect(context, CGRectMake(xLoc, yLoc, 200, 20)); 

如果我想要短边(在矩形的左侧和右侧)略微弯曲而不是直边,那该怎么办呢? 代码看起来会是什么样的?

(请注意,我对CGContext绘图相对缺乏经验)

像这样的东西(未经测试,所以要小心虫子!):

 - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]); CGContextSetRGBFillColor(context, 0.0, 0.0, 1.0, 1.0); CGRect rrect = CGRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetWidth(rect)-30, CGRectGetHeight(rect)-30); CGFloat radius = 0.5f; CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect); CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect); CGContextMoveToPoint(context, minx, midy); CGContextAddArcToPoint(context, minx, miny, midx, miny, radius); CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius); CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius); CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius); CGContextClosePath(context); CGContextDrawPath(context, kCGPathFillStroke); } 

您可能会发现Jeff LaMarche的RoundedRectView类很有用,无论是直接使用实例还是看他如何制作它们:

http://iphonedevelopment.blogspot.com/2008/11/creating-transparent-uiviews-rounded.html