Changes between Version 16 and Version 17 of TestTest


Ignore:
Timestamp:
11/14/11 17:14:46 (13 years ago)
Author:
Boris Ioffe
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TestTest

    v16 v17  
    1414        }
    1515}}}
     16
     17
     18
     19{{{
     20
     21#import "MATCAlertView.h"
     22
     23
     24@implementation MATCAlertView
     25
     26#pragma mark -
     27#pragma mark Initialization and teardown
     28
     29- (id)initWithFrame:(CGRect)frame {
     30    if (self = [super initWithFrame:frame]) {
     31        // Initialization code
     32    }
     33    return self;
     34}
     35
     36
     37- (void)dealloc {
     38    [super dealloc];
     39}
     40
     41#pragma mark -
     42#pragma mark Drawing methods
     43
     44+ (CGColorSpaceRef)genericRGBSpace;
     45{
     46        static CGColorSpaceRef space = NULL;
     47        if (space == NULL)
     48        {
     49                space = CGColorSpaceCreateDeviceRGB();
     50        }
     51        return space;
     52}
     53
     54+ (CGColorRef)whiteColor;
     55{
     56        static CGColorRef white = NULL;
     57        if (white == NULL)
     58        {
     59                CGFloat values[4] = {1.0, 1.0, 1.0, 1.0};
     60                white = CGColorCreate([self genericRGBSpace], values);
     61        }
     62        return white;
     63}
     64
     65+ (CGColorRef)shadowColor;
     66{
     67        static CGColorRef shadowColor = NULL;
     68        if (shadowColor == NULL)
     69        {
     70                CGFloat values[4] = {0.0, 0.0, 0.0, 0.5};
     71                shadowColor = CGColorCreate([self genericRGBSpace], values);
     72        }
     73        return shadowColor;
     74}
     75
     76
     77+ (CGColorRef)translucentBlueColor;
     78{
     79        static CGColorRef translucentBlue = NULL;
     80        if (translucentBlue == NULL)
     81        {
     82                CGFloat values[4] = {0.13, 0.24, 0.44, 0.7};
     83                translucentBlue = CGColorCreate([self genericRGBSpace], values);
     84        }
     85        return translucentBlue;
     86}
     87
     88- (void)drawRect:(CGRect)rect
     89{
     90        CGFloat shadowRadius = 4.0f;
     91        CGContextRef context = UIGraphicsGetCurrentContext();
     92    CGRect currentBounds = self.bounds;
     93
     94        CGContextSaveGState(context);
     95        // Set up the shadow around the view, which requires a slight inset on the view
     96        CGContextSetShadowWithColor( context, CGSizeMake(0.0f, -shadowRadius), shadowRadius, [MATCAlertView shadowColor] );   
     97
     98        // Draw the blue background rectangle and border
     99        CGContextSetLineWidth(context, 2.0f);
     100        CGContextSetStrokeColorWithColor(context, [MATCAlertView whiteColor]);
     101        CGContextSetFillColorWithColor(context, [MATCAlertView translucentBlueColor]);
     102       
     103        CGFloat cornerRadius = 5.0f;
     104        CGRect actualViewRect = CGRectMake(shadowRadius + 0.5, 1.5f, currentBounds.size.width - shadowRadius * 2.0f, currentBounds.size.height - shadowRadius*2.5f);
     105
     106        CGContextBeginPath(context);
     107        CGContextMoveToPoint(context, CGRectGetMinX(actualViewRect) + cornerRadius + 0.5, CGRectGetMinY(actualViewRect) + 0.5);
     108    CGContextAddArc(context, CGRectGetMaxX(actualViewRect) - cornerRadius + 0.5, CGRectGetMinY(actualViewRect) + cornerRadius + 0.5, cornerRadius, 3 * M_PI / 2, 0, 0);
     109    CGContextAddArc(context, CGRectGetMaxX(actualViewRect) - cornerRadius + 0.5, CGRectGetMaxY(actualViewRect) - cornerRadius + 0.5, cornerRadius, 0, M_PI / 2, 0);
     110    CGContextAddArc(context, CGRectGetMinX(actualViewRect) + cornerRadius + 0.5, CGRectGetMaxY(actualViewRect) - cornerRadius + 0.5, cornerRadius, M_PI / 2, M_PI, 0);
     111    CGContextAddArc(context, CGRectGetMinX(actualViewRect) + cornerRadius + 0.5, CGRectGetMinY(actualViewRect) + cornerRadius + 0.5, cornerRadius, M_PI, 3 * M_PI / 2, 0);     
     112    CGContextClosePath(context);
     113        CGContextDrawPath(context, kCGPathFillStroke);
     114    CGContextRestoreGState(context);
     115//
     116//      // Clip the gloss clipping path to the rounded rectangle
     117//      CGContextBeginPath(context);
     118//      CGContextMoveToPoint(context, CGRectGetMinX(actualViewRect) + cornerRadius + 0.5, CGRectGetMinY(actualViewRect) + 0.5);
     119//    CGContextAddArc(context, CGRectGetMaxX(actualViewRect) - cornerRadius + 0.5, CGRectGetMinY(actualViewRect) + cornerRadius + 0.5, cornerRadius, 3 * M_PI / 2, 0, 0);
     120//    CGContextAddArc(context, CGRectGetMaxX(actualViewRect) - cornerRadius + 0.5, CGRectGetMaxY(actualViewRect) - cornerRadius + 0.5, cornerRadius, 0, M_PI / 2, 0);
     121//    CGContextAddArc(context, CGRectGetMinX(actualViewRect) + cornerRadius + 0.5, CGRectGetMaxY(actualViewRect) - cornerRadius + 0.5, cornerRadius, M_PI / 2, M_PI, 0);
     122//    CGContextAddArc(context, CGRectGetMinX(actualViewRect) + cornerRadius + 0.5, CGRectGetMinY(actualViewRect) + cornerRadius + 0.5, cornerRadius, M_PI, 3 * M_PI / 2, 0);   
     123//    CGContextClosePath(context);
     124//      CGContextClip(context);
     125//     
     126//      // Set up a clipping path for the gloss gradient
     127//      CGFloat glossRadius = 600.0f;
     128//      CGPoint glossCenterPoint = CGPointMake(CGRectGetMidX(currentBounds), 30.0 - glossRadius);
     129//      CGContextBeginPath(context);
     130//      CGContextMoveToPoint(context, glossCenterPoint.x, glossCenterPoint.y);
     131//      CGContextAddArc(context, glossCenterPoint.x, glossCenterPoint.y, glossRadius, 0.0, M_PI, 0
     132//                                      );
     133//      CGContextClosePath(context);
     134//      CGContextClip(context);
     135//
     136//      // Draw the gloss gradient     
     137    CGGradientRef glossGradient;
     138    CGFloat locations[2] = { 0.0, 1.0 };
     139    CGFloat components[8] = { 1.0, 1.0, 1.0, 0.65,  // Start color
     140                1.0, 1.0, 1.0, 0.06 }; // End color
     141    glossGradient = CGGradientCreateWithColorComponents([MATCAlertView genericRGBSpace], components, locations, 2);
     142        CGPoint topCenter = CGPointMake(CGRectGetMidX(currentBounds), 0.0f);
     143    CGPoint midCenter = CGPointMake(CGRectGetMidX(currentBounds), 30.0f);
     144    CGContextDrawLinearGradient(context, glossGradient, topCenter, midCenter, 0);
     145    CGGradientRelease(glossGradient);   
     146}
     147
     148
     149
     150
     151@end
     152
     153}}}
     154