【问题标题】:Cannot get CALayer to display in UIView无法让 CALayer 在 UIView 中显示
【发布时间】:2013-01-09 12:57:28
【问题描述】:

我有一个简单的单视图应用程序,由于某种原因,我无法在应用程序的UIView 中显示CALayer。视图的背景颜色正确,但CALayer 中的图像不可见。我已经在调试器中逐步完成了代码,并且我确信图像正在正确加载。如果我不使用CALayer 而不是使用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;
}

【问题讨论】:

    标签: ios uiview core-animation calayer caanimation


    【解决方案1】:

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

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

    而不是

    containerLayer.bounds = cardRect;
    ..
    imageLayer.bounds = cardRect;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2020-12-03
      • 2021-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多