0

我有一个简单的单视图应用程序,由于某种原因,我无法CALayer在应用程序的UIView. 视图的背景颜色是正确的,但其中的图像CALayer不可见。我已经在调试器中逐步完成了代码,并且确定图像正在正确加载。如果CALayer我不使用 a而不是使用 a ,那么UIImageView一切都按您的预期工作。

这是我的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;
}
4

1 回答 1

2

要么设置正确的锚点,要么使用

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

代替

containerLayer.bounds = cardRect;
..
imageLayer.bounds = cardRect;
于 2013-01-09T13:43:06.660 回答