- iPad Memory Limitations
- - (void)drawRect:(CGRect)rect {
- // get the contect
- CGContextRef context = UIGraphicsGetCurrentContext();
- //for the shadow, save the state then draw the shadow
- CGContextSaveGState(context);
- CGContextSetShadow(context, CGSizeMake(4,-5), 10);
- //now draw the rounded rectangle
- CGContextSetStrokeColorWithColor(context, [[UIColor blackColor] CGColor]);
- if(_HighlightColor==nil){
- _HighlightColor = [[UIColor whiteColor] retain];
- }
- CGContextSetFillColorWithColor(context, _HighlightColor.CGColor);
- //since I need room in my rect for the shadow, make the rounded rectangle a little smaller than frame
- CGRect rrect = CGRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect), CGRectGetWidth(rect)-30, CGRectGetHeight(rect)-30);
- CGFloat radius = 5;
- // the rest is pretty much copied from Apples example
- CGFloat minx = CGRectGetMinX(rrect), midx = CGRectGetMidX(rrect), maxx = CGRectGetMaxX(rrect);
- CGFloat miny = CGRectGetMinY(rrect), midy = CGRectGetMidY(rrect), maxy = CGRectGetMaxY(rrect);
- // Start at 1
- CGContextMoveToPoint(context, minx, midy);
- // Add an arc through 2 to 3
- CGContextAddArcToPoint(context, minx, miny, midx, miny, radius);
- // Add an arc through 4 to 5
- CGContextAddArcToPoint(context, maxx, miny, maxx, midy, radius);
- // Add an arc through 6 to 7
- CGContextAddArcToPoint(context, maxx, maxy, midx, maxy, radius);
- // Add an arc through 8 to 9
- CGContextAddArcToPoint(context, minx, maxy, minx, midy, radius);
- // Close the path
- CGContextClosePath(context);
- // Fill & stroke the path
- CGContextDrawPath(context, kCGPathFillStroke);
- //for the shadow
- CGContextRestoreGState(context);
- }