【Objective-C】画像の向きがIBに表示されているものと違って困った
困った現象と再現
↓の画像を。。。
こんなかんじで表示したい
なにも考えずにInterfaceBuilderで作って
シュミレータで実行したら
横向きになってしまった。。。
修正1
ググって以下のように修正
コード抜粋
// imageWithCGImage scale: orientation: を使い、画像の向きを指定したImageViewを作成 UIImage *originalImage = [UIImage imageNamed:@"DSC02551.JPG"]; UIImage *image = [UIImage imageWithCGImage:originalImage.CGImage // 出力したい画像のCGImageオブジェクト scale:originalImage.scale // 画像のスケール。今回は元のスケールを利用 orientation:UIImageOrientationLeft]; // 画像の向き。今回は反時計周りに90°回転させる self.imageView.image = image;
実行。。。
おーまいが。
向きは期待通りだけど、今度は画像のサイズが。。。
修正2
再度ググる。
[iOS]UIImageViewにAspect Fillで画像を表示したらなんかはみ出しちゃった時にすること | Developers.IO
修正。
コード抜粋
// imageWithCGImage scale: orientation: を使い、画像の向きを指定したImageViewを作成 UIImage *originalImage = [UIImage imageNamed:@"DSC02551.JPG"]; UIImage *image = [UIImage imageWithCGImage:originalImage.CGImage // 出力したい画像のCGImageオブジェクト scale:originalImage.scale // 画像のスケール。今回は元のスケールを利用 orientation:UIImageOrientationLeft]; // 画像の向き。今回は反時計周りに90°回転させる self.imageView.image = image; self.imageView.clipsToBounds = YES; // YESにしないと画像がImageViewからはみ出てしまう
実行。
やっとこ期待通りになりました。
画像のサイズについては、UIImageViewのcontentModeプロパティの値がUIViewContentModeScaleAspectFitなど、ImageViewに収まるものが設定されている場合、そもそもはみ出る恐れがないので設定不要です。
今回の場合は、UIViewContentModeScaleAspectFillを設定していたので、clipsToBoundsプロパティの値をYESにしないとはみ出てしまいました。