无法让 CALayer 在 UIView 中显示
Posted
技术标签:
【中文标题】无法让 CALayer 在 UIView 中显示【英文标题】:Cannot get CALayer to display in 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;
【问题讨论】:
【参考方案1】:要么设置正确的锚点,要么使用
containerLayer.frame = cardRect;
..
imageLayer.frame = cardRect;
而不是
containerLayer.bounds = cardRect;
..
imageLayer.bounds = cardRect;
【讨论】:
以上是关于无法让 CALayer 在 UIView 中显示的主要内容,如果未能解决你的问题,请参考以下文章