我需要做的是从左到右翻转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以正确设置内容?
答案 0 :(得分:0)
您已将变换应用于测试imageview而非其图像。因此,当您将图像分配给其他未折叠图层时,您无法预期翻转输出。
将变换应用于lizard.layer。你会得到它。
[lizard.layer setAffineTransform:CGAffineTransformIdentity];
[lizard.layer setAffineTransform: CGAffineTransformMakeScale(-1.0, 1.0)];