2013-01-09 63 views
0

我有一个简单的单视图应用程序,出于某种原因,我无法在应用程序的UIView中显示CALayer。该视图的背景色是正确的,但CALayer中的图像不可见。我已经完成了调试器中的代码,我确信图像正在正确加载。如果不是使用CALayer我使用UIImageView一切都如你所愿。无法让CALayer在UIView中显示

这里是我的UIViewController子类的代码。你看到我在做什么错了吗?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.view.backgroundColor = [UIColor darkGrayColor]; 

    CALayer* cardLayer = [self layerForCard]; 

    [self.view.layer addSublayer:cardLayer]; 
} 

- (CALayer *)layerForCard 
{ 
    UIImage* cardImage = [UIImage imageNamed:@"card1.jpg"]; 
    CGSize cardSize = cardImage.size; 
    CGRect cardRect = CGRectMake(.0, .0, cardSize.width, cardSize.height); 

    // Container Layer 
    CALayer *containerLayer = [CALayer layer]; 
    containerLayer.bounds = cardRect; 
    containerLayer.opacity = 1.0; 

    // Image Layer 
    CALayer *imageLayer = [CALayer layer]; 
    imageLayer.bounds = cardRect; 
    imageLayer.contentsGravity = kCAGravityResizeAspectFill; 
    imageLayer.contents = CFBridgingRelease(cardImage.CGImage); 

    [containerLayer addSublayer:imageLayer]; 

    return containerLayer; 
} 

回答

2

或者设置正确的anchorpoints,或使用

containerLayer.frame = cardRect; 
.. 
imageLayer.frame = cardRect; 

代替

containerLayer.bounds = cardRect; 
.. 
imageLayer.bounds = cardRect; 
+0

感谢 - 这奏效了。现在我明白了为什么。 :) – RobertJoseph