4

PortraiteモードとLandscapeモードのどちらであるかに応じて、UIImageViewを回転してサイズを変更する必要があるという問題があります。

この関連する問題の答えが言うように、私は画像ビューを正しく回転させることができました:iPhoneの向きに応じて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];
}

UIImageViewを開始する方法:

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;

現在起こっていることは、画像が回転しますが、横向きモードの縦向きモードと同じサイズですが、中央に配置されていることです(リンクされた質問への回答として回転を行ったので、理由がわかります)。

だから、私が欲しいのは、元の画像がフルスクリーンの風景に収まるスケールを持っているので、画像がフルスクリーンで表示されることです。私が設定したように

UIViewContentModeScaleAspectFit

私の最初の素朴な考えは、これが適切な風景のスケールに合うように魔法のように再スケールするだろうと思っていました。明らかにそうではありません。ヒントはありますか?

4

1 に答える 1

-1

UIViewContentModeScaleAspectFit を使用してみて、親ビュー プロパティで autoresizedSubviews を YES に設定してください。画像は自動的にサイズ変更されます。

于 2012-04-27T07:29:06.863 に答える