无法翻转CGImage

时间:2012-03-20 08:59:02

标签: iphone core-animation

我需要做的是从左到右翻转CGImageRef,它是CALayer的一个属性。我一直在谷歌搜索,找到一种直接翻转它的方法,但是徒劳无功。所以我决定要翻转UIImage,然后将其CGImage属性设置为CALayer的内容。

所以我做的是:

 UIImage *src = [UIImage imageNamed:@"res/images/lizard.png"];
src = [UIImage imageWithCGImage:src.CGImage scale:1.0 orientation:UIImageOrientationRightMirrored];
UIImageView *test = [[UIImageView alloc] initWithImage:src];
[test setFrame:CGRectMake(20, 20, 50, 50)];
[self.view addSubview:test];

[lizard.layer setContents:((id)test.image.CGImage)];

但这是徒劳的,这层没有被翻转。我接下来要做的是:

UIImage *src = [UIImage imageNamed:@"res/images/lizard.png"];
UIImageView *test = [[UIImageView alloc] initWithImage:src];
[test setFrame:CGRectMake(20, 20, 50, 50)];
[self.view addSubview:test];
test.transform   = CGAffineTransformIdentity;
test.transform   = CGAffineTransformMakeScale(-1.0, 1.0);

[lizard.layer setContents:((id)test.image.CGImage)];

但不幸的是,它仍然没有给我我需要的东西。名为test的UIImageView按预期显示 - 它被翻转,但lizard.layer的内容不是。怎么会发生? 你能救我吗?

1)是否有正常的方式来翻转CALayer的内容?

2)如果没有,那么如何翻转CGImageRef以正确设置内容?

1 个答案:

答案 0 :(得分:0)

您已将变换应用于测试imageview而非其图像。因此,当您将图像分配给其他未折叠图层时,您无法预期翻转输出。

将变换应用于lizard.layer。你会得到它。

[lizard.layer  setAffineTransform:CGAffineTransformIdentity];
[lizard.layer setAffineTransform: CGAffineTransformMakeScale(-1.0, 1.0)];