2010-04-03 15 views
11

I opracowali aplikację, w której chcę ustawić kolor tła UIView, który jest już ustawiony na kodzie UIViewController.The jest poniżej,Jak ustawić kolor tła w UIView przy użyciu CGContext?

@implementation frmGraphView 


- (id)initWithFrame:(CGRect)frame { 
    if (self = [super initWithFrame:frame]) 
    { 
     // Initialization code 
    } 
    return self; 
} 


- (void)drawRect:(CGRect)rect 
{ 
    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextClearRect(ctx, rect); 
    //CGContextSetCMYKFillColor(ctx, 35.0, 56.0, 34.0, 30.0, 1.0); 
    //CGContextSetRGBFillColor(ctx, 92.0f, 95.0f, 97.0f, 1.0f); 
    //CGContextFillRect(ctx, CGRectMake(0, 0, 300, 280)); 



    CGContextSetRGBStrokeColor(ctx, 2.0, 2.0, 2.0, 1.0); 
    CGContextSetLineWidth(ctx, 2.0); 
    float fltX1,fltX2,fltY1,fltY2=0; 
    NSArray *hoursInDays = [[NSArray alloc] initWithObjects:@"0",@"1" ,@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"11",@"12", nil]; 
    fltX1 = 30; 
    fltY1 = 5; 
    fltX2 = fltX1; 
    fltY2 = 270; 

    //Dividing the Y-axis 
    CGContextMoveToPoint(ctx, fltX1, fltY1); 
    CGContextAddLineToPoint(ctx, fltX2, fltY2); 
    //float y = 275; 
    for(int intIndex = 0 ; intIndex < [hoursInDays count] ; fltY2-=20, intIndex++) 
    { 
     CGContextSetRGBStrokeColor(ctx, 2.0, 2.0, 2.0, 1.0); 
     CGContextMoveToPoint(ctx, fltX1-3 , fltY2); 
     CGContextAddLineToPoint(ctx, fltX1+3, fltY2); 
     CGContextSelectFont(ctx, "Helvetica", 14.0, kCGEncodingMacRoman); 
     CGContextSetTextDrawingMode(ctx, kCGTextFill); 
     CGContextSetRGBFillColor(ctx, 0, 255, 255, 1); 
     CGAffineTransform xform = CGAffineTransformMake(
                 1.0, 0.0, 
                 0.0, -1.0, 
                 0.0, 0.0); 
     CGContextSetTextMatrix(ctx, xform); 
     const char *arrayDataForYAxis = [[hoursInDays objectAtIndex:intIndex] UTF8String]; 
     CGContextShowTextAtPoint(ctx, fltX1-18, fltY2-18 , arrayDataForYAxis, strlen(arrayDataForYAxis)); 
     CGContextStrokePath(ctx); 
    } 
    CGContextSetRGBStrokeColor(ctx, 2.0, 2.0, 2.0, 1.0); 
    CGContextSetLineWidth(ctx, 2.0); 

    fltX1 = 5; 
    fltY1 = 250; 
    fltX2 = 270; 
    fltY2 = fltY1; 

    NSArray *weekDays =[[NSArray alloc] initWithObjects:@"Sun", @"Mon", @"Tus", @"Wed", @"Thu", @"Fri", @"Sat", nil]; 
    //Dividing the X-axis 
    CGContextMoveToPoint(ctx, fltX1, fltY1); 
    CGContextAddLineToPoint(ctx, fltX2, fltY2); 
    //float y = 275; 
    for(int intIndex = 0 ; intIndex < [weekDays count] ; fltX1+=33, intIndex++) 
    { 
     CGContextSetRGBStrokeColor(ctx, 2.0, 2.0, 2.0, 1.0); 
     CGContextMoveToPoint(ctx, fltX1+52 , fltY2-3); 
     CGContextAddLineToPoint(ctx, fltX1+52, fltY2+3); 
     CGContextSelectFont(ctx, "Arial", 15.0, kCGEncodingMacRoman); 
     CGContextSetTextDrawingMode(ctx, kCGTextFill); 
     CGContextSetRGBFillColor(ctx, 0, 255, 255, 1); 
     CGAffineTransform xform = CGAffineTransformMake(
                 1.0, 0.0, 
                 0.0, -1.0, 
                 0.0, 0.0); 
     CGContextSetTextMatrix(ctx, xform); 
     const char *arrayDataForXAxis = [[weekDays objectAtIndex:intIndex] UTF8String]; 
     CGContextShowTextAtPoint(ctx, fltX1+37, fltY2+18 , arrayDataForXAxis, strlen(arrayDataForXAxis)); 
     CGContextStrokePath(ctx); 

     } 
} 

@end 
+0

Jaki jest '@ interface' z frmGraphView? – kennytm

Odpowiedz

32

Jak o tym kodzie?

- (void)drawRect:(CGRect)rect { 

    [super drawRect:rect]; 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGRect drawRect = CGRectMake(rect.origin.x, rect.origin.y,rect.size.width, rect.size.height); 

    CGContextSetRGBFillColor(context, 100.0f/255.0f, 100.0f/255.0f, 100.0f/255.0f, 1.0f); 
    CGContextFillRect(context, drawRect); 
} 
+2

Dzięki temu brakowało mi FillRect – htafoya

0

Swift 3

UIGraphicsBeginImageContextWithOptions(size, true, UIScreen.main.scale) 
let context = UIGraphicsGetCurrentContext() 
context?.setFillColor(UIColor.green.cgColor) 
let image = UIGraphicsGetImageFromCurrentImageContext() 
UIGraphicsEndImageContext() 
return image 
Powiązane problemy