2011-01-14 49 views
0

我試圖創建一個圖像內容一個UIImage,並設置爲CALayer的內容(圖像最終會分裂並在多個CALayers傳播)。唯一的問題是,它似乎並沒有被正確對齊 - 它是由30個像素左右的偏移。對齊背景中一個的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; 
} 

我沒有足夠的信譽分,張貼圖片還沒有,但這裏的層如何呈現,以及它應該如何渲染和完整的圖像:link text

回答

0

找到我的錯誤 - setContentsGravity應採取內置的字符串常量kCAGravityTop,不是我的NSString字面@「kCAGravityTop」。