2012-03-20 24 views
0

私がする必要があるのは、CALayerのconntentsプロパティであるCGImageRefを左から右に反転させることです。私は徹底的にそれを反転させる方法を見つけるために徹底的に検索してきましたが、それは無駄です。だから、私はUIImageを反転させ、CGImageプロパティをCALayerのコンテンツとして設定することにしました。CGImageを反転できません

ので、私がやったことです:

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

あなたはそのイメージではなく、テストイメージビューにトランスフォームを適用しました。そのため、画像を他の未処理レイヤーに割り当てると、反転した出力は期待できません。

変換をlizard.layerに適用します。あなたはそれを得るだろう。

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

私はどのように変換をlizard.layerに適用しますか? –

+0

このmethos-(void)setAffineTransformを使ってCAlayerに変換を割り当てることができます:(CGAffineTransform)m; – Vignesh

+0

それは動作しますが、私はそれが動作するために必要な方法ではありません。それはイメージを反転させるが、それはそれを反転させる...私は説明する方法がわからない...イメージが反転されただけではなく、それは上下から中央に消えてから中央から下に上に現れ、説明するのが本当に難しいですが、必要なように機能しません。 –

関連する問題