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