我需要做的是将CGImageRef从左到右翻转,这是CALayer的conntents属性。我一直在谷歌上彻底搜索,想找到一种直接翻转它的方法,但徒劳无功。所以我决定做的是翻转一个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来正确设置内容?
发布于 2012-03-20 17:04:23
您已经应用了transform来测试图像视图,而不是它的图像。因此,当你将图像分配给其他未翻转的图层时,你不能期望翻转的输出。
将变换应用于lizard.layer。你会明白的。
[lizard.layer setAffineTransform:CGAffineTransformIdentity];
[lizard.layer setAffineTransform: CGAffineTransformMakeScale(-1.0, 1.0)];https://stackoverflow.com/questions/9783822
复制相似问题