2

UIImageView が縦長の画像とは異なる横長の画像を処理できるようにすることは可能ですか?

説明しようと思いますがImageViewControllerUIImageView画面全体を埋める があります。
ある時点で、ユーザーは を起動UIImagePickerControllerし、カメラ ロールから写真を選択します。
次に、その画像でのインスタンスを作成してImageViewControllerプッシュします

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];


    ImageViewController *ivc = [[ImageViewController alloc] initWithImage:image];
    [picker pushViewController:ivc animated:YES];
    [ivc release];
}

問題は、画像が横向きモードの場合でも、画面全体に表示されることです。
iPhone の写真アプリで横長の画像 (画面の中央に黒い背景) が表示されるようにしたいと考えています。

UIImageViewでランドスケープモードの画像を表示する方法はありますか? または、画像の向きに従ってimageViewフレームを設定する必要がありますか?

4

3 に答える 3

3

これを設定するだけです:

imageView.contentMode = UIViewContentModeAspectFit;

そして、それはプロポーションを維持し画面を埋めずに画面にフィットします。

于 2012-07-19T12:43:20.337 に答える
2

UIImageView画像の比率に応じてのcontentModeプロパティを変更したい場合があります。

だからでviewDidLoad

if (imageView.image.size.height > imageView.image.size.width) { 
    imageView.contentMode = UIViewContentModeAspectFill;
} else { 
    imageView.contentMode = UIViewContentModeAspectFit; 
}

ユーザーが横向きに切り替えたときにそのモードを変更します。たとえば、次のようになりますwillAnimateRotationToInterfaceOrientation:duration:

if (UIInterfaceOrientationIsLandscape(toIntefaceOrientation)){
   if (imageView.image.size.height > imageView.image.size.width) { 
       imageView.contentMode = UIViewContentModeAspectFit;
   } else { 
       imageView.contentMode = UIViewContentModeAspectFill; 
   }
} else {
   if (imageView.image.size.height > imageView.image.size.width) { 
       imageView.contentMode = UIViewContentModeAspectFill;
   } else { 
       imageView.contentMode = UIViewContentModeAspectFit; 
   }
}

注意:テスト済みですが、動作する可能性があります

于 2012-07-22T16:29:13.303 に答える
0
UIImageView *imgView;
imgView.contentMode = UIViewContentModeCenter;
于 2012-07-19T12:33:51.260 に答える