2012-04-26 17 views
3

UIImageViewを回転させ、PortraiteモードまたはLandscapeモードに応じてサイズを変更する必要があるという問題があります。UIImageViewの向きがプログラムモードで横向きに変更されました

この問題に関する答えとして、画像ビューを正しく回転させることができました。Rotate UIImageView Depending on iPhone Orientationです。

これは回転のための私のコードは、(私は唯一の左横にそれを回転させるに焦点を当ててきた今のところ)である:

UIImage *image = [UIImage imageNamed:@"picture.png"]; 
self.testImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 400)]; 
self.testImageView.image = image; 
self.testImageView.contentMode = UIViewContentModeScaleAspectFit; 
self.testImageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

今何が起こっている:私はUIImageViewを開始する方法

- (void)rotateImage:(UIImageView *)image duration:(NSTimeInterval)duration 
      curve:(int)curve degrees:(CGFloat)degrees 
{ 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:duration]; 
    [UIView setAnimationCurve:curve]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 

    float angle = DEGREES_TO_RADIANS(degrees);  
    CGAffineTransform transform = CGAffineTransformRotate(
         CGAffineTransformMakeTranslation(
                 160.0f-self.view.center.x, 
                 240.0f-self.view.center.y 
                 ),angle); 
    image.transform = transform; 
    [UIView commitAnimations]; 
} 

画像は回転されますが、風景モードではポートレートモードと同じサイズですが、中央に配置されています(リンクされた質問への回答として回転を行った理由はわかります)。

私が望むのは、元の画像がフルスクリーンの風景に収まるように、画像がフルスクリーンで表示されるということです。私が設定したように

UIViewContentModeScaleAspectFit 

これは魔法のように適切な景観スケールに合うように再調整されると私は考えていました。それは明らかにそうではありません。何かヒント?

+0

「元の画像にはフルスクリーンの風景に合わせる尺度がある」という意味は不明ですが、画像ビューを塗りつぶしている間に画像にアスペクト比を保持したい場合(クリッピングを犠牲にして) 'UIViewContentModeScaleAspectFill'を試してみてください。 – warrenm

+0

はい私はAspectFillを試しましたが、イメージが大きくなり、画面の外に表示されると言います。その場合、私はそれを正確に縮尺したかったが、費用はかかりませんでした。元の画像のスケールはiPhoneのランドスケープの画面には合わないかもしれませんが、今は問題があります。 )。 – user373455

答えて

-1

UIViewContentModeScaleAspectFitを使用し、親ビューのプロパティautoresizesSubviewsをYESに設定してみてください。イメージは自動的にサイズ変更する必要があります。

+0

残念ながら、それは変化をもたらしません。 – user373455

関連する問題