2010-11-22 8 views
0

ボタンがあります。ボタンをクリックすると180の画像を回転させたいですが、最初にボタンをクリックしたときにのみ動作します前進? は、次の私のソースコードです:画像の回転を続ける方法

- (IBAction)touchButton_Refresh { 

photo *photos = [photoArray objectAtIndexhotoIndex]; 
NSData *xmlData = [NSData dataWithContentsOfFilehotos.localPath]; 
UIImage *image; 
if ([xmlData isKindOfClass:[NSData class]]) { 
image = [[UIImage imageWithData:xmlData] retain]; 
} 


SlideItem *slideItemRotate; 


if (toOrientation == 1 || toOrientation == 2) { 
slideItemRotate = [[SlideItem alloc] initWithFrame:CGRectMake(768*photoIndex, 0, 768, 980)]; 
} 
else if (toOrientation == 3 || toOrientation == 4) { 
slideItemRotate = [[SlideItem alloc] initWithFrame:CGRectMake(1024*photoIndex, 0, 1024, 700)]; 
} 


slideItemRotate.photoImageView.image = image; 

CGAffineTransform rotation = CGAffineTransformMakeRotation(3.14159265); 
[slideItemRotate.photoImageView setTransform:rotation]; 

[[[slideScrollView subviews] objectAtIndex:0] removeFromSuperview]; 

[slideScrollView addSubview:slideItemRotate]; 


[slideItemRotate release]; 


} 

答えて

1

あなたはtranformを連結する必要があり、そうでなければあなただけの(実際にはより多くのそれを回転していない)同じ回転を適用しておきます。これは、実際に回転を連結し、周りに回転イメージを維持します

CGAffineTransform rotation = CGAffineTransformConcat([[slideItemRotate photoImageView] transform], CGAffineTransformMakeRotation(3.14159265)); 
[slideItemRotate.photoImageView setTransform:rotation]; 

:これで

CGAffineTransform rotation = CGAffineTransformMakeRotation(3.14159265); 
[slideItemRotate.photoImageView setTransform:rotation]; 

:だから、これらの行を交換してください。あなたが常に180度周りにいる場合、それを行う別の方法は、恒等変換をテストすることです。ビューの変換が恒等変換の場合は、回転を適用します。そうでない場合は、トランスフォームをアイデンティティトランスフォームにリセットします(プロセスを効果的に反転させます)。

関連する問題