CALayer的图像没有显示出来

时间:2013-07-29 17:32:27

标签: ios objective-c

我正在尝试使用CALayer来显示图像,但图像没有显示出来。我已经验证'image'不是nil,image.size是正确的,而layer.contents是一个有效的CABackingStore。

- (void)viewDidLoad
{
  [super viewDidLoad];

  layer = [[CALayer alloc] init];
  [self.view.layer addSublayer:layer];
  UIImage *image = [UIImage imageNamed:@"download.jpeg"];
  layer.bounds = CGRectMake(0, 0, image.size.width, image.size.height);
  layer.position = self.view.center;
  layer.contents = (id)image.CGImage;

  [layer setNeedsDisplay];
}

这可能是什么问题?

2 个答案:

答案 0 :(得分:4)

删除[layer setNeedsDisplay];应该纠正行为。

docs(强调添加):

  

调用此方法会导致图层重新缓存其内容。这导致该层可能调用其委托的displayLayer:或drawLayer:inContext:方法。 删除图层内容属性中的现有内容,以便为新内容腾出空间。

答案 1 :(得分:0)

使用此

layer = [[CALayer alloc] init];
  [self.view.layer addSublayer:layer];

  //UIImage *image = [UIImage imageNamed:@"download.jpeg"];
  layer.bounds = CGRectMake(0, 0, 300,300);
  layer.position = self.view.center;
  //layer.contents = (id)image.CGImage;
    layer.contents = (id)[UIImage imageNamed:@"download.jpeg"].CGImage;
    [layer setNeedsDisplay];

删除[layer setNeedsDisplay]; 我猜setNeedsDisplay使图层重绘内容,因此删除图像。

-

相关问题