2011-01-14 9 views
0

Ich versuche, ein UIImage aus einem Bildkontext zu erstellen und diesen als den Inhalt eines CALayer festzulegen (das Bild wird schließlich aufgeteilt und über mehrere CALayers verteilt). Das einzige Problem ist, dass es nicht richtig ausgerichtet ist - es ist um 30 Pixel oder so versetzt.Ausrichten von Hintergrund innerhalb eines CALayer

- (id)initWithFrame:(CGRect)frame { 
    if ((self = [super initWithFrame:frame])) { 

     number = 1; 

     background = [UIImage imageNamed:@"numberBackground.png"]; 

     // draw images 
     UIGraphicsBeginImageContext(CGSizeMake(background.size.width, background.size.height)); 

     [background drawAtPoint:CGPointMake(0, 0)]; 

     NSString *numberString = [[NSString alloc] initWithString:[NSString stringWithFormat:@"%d", number]]; 
     [[UIColor whiteColor] set]; 
     [numberString drawAtPoint:CGPointMake(0, 0) withFont:[UIFont fontWithName:@"HelveticaNeue" size:128]]; 

     UIImage *front = [UIGraphicsGetImageFromCurrentImageContext() retain]; 

     UIGraphicsEndImageContext(); 

     // top layer 
     topLayer = [CALayer layer]; 
     [topLayer setContents:(id)front.CGImage]; 
     [topLayer setContentsGravity:@"kCAGravityTop"]; 
     [topLayer setFrame:CGRectMake(0, 0, background.size.width, background.size.height/2)]; 
     [topLayer setAnchorPoint:CGPointMake(0, 1)]; 
     [topLayer setPosition:CGPointMake(0, background.size.height/2)]; 
     [topLayer setMasksToBounds:NO]; 
     [topLayer setBackgroundColor:[UIColor lightGrayColor].CGColor]; 
     [self.layer addSublayer:topLayer]; 

    } 
    return self; 
} 

Ich habe nicht genug Ruf Punkte habe ein Bild noch zu schreiben, aber hier ist, wie die Schicht sollte machen und das ganze Bild, und wie es macht: link text

Antwort

0

meinen Fehler gefunden - setContentsGravity sollte die integrierte String-Konstante kCAGravityTop verwenden, nicht mein NSString-Literal @ "kCRAravityTop".

Verwandte Themen