UIImageView
キャプチャした画像のサイズを変更するには、IB 内のビューのモードを拡大縮小して塗りつぶすように設定する必要があります。画像がライブラリまたはカメラから選択されると、自動的にサイズが変更されます。ただし、サイズを変更できないため、自動レイアウトをオフにするImageView
必要があります。あなたのコードは大丈夫です。とにかく、これをもう少しよく理解するために作成できるサンプル アプリ コードを次に示します。
.h
#import <UIKit/UIKit.h>
@interface ImageTestViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
- (IBAction)takePhoto: (UIButton *)sender;
- (IBAction)selectPhoto:(UIButton *)sender;
@end
.m
#import "ImageTestController.h"
@interface ImageTestViewController ()
@end
@implementation ImageTestViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Device has no camera"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[myAlertView show];
}
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
- (IBAction)takePhoto:(UIButton *)sender {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:NULL];
}
- (IBAction)selectPhoto:(UIButton *)sender {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentViewController:picker animated:YES completion:NULL];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *chosenImage = info[UIImagePickerControllerEditedImage];
self.imageView.image = chosenImage;
[picker dismissViewControllerAnimated:YES completion:NULL];
}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:NULL];
}
@end
ImageTestController
Xib またはストーリーボードのビューで、アクションごとに 1 つずつ、2 つのボタンを配置し、必要なリンクを IB に作成します。次に、 a を配置UIImageView
して、ビューで必要なサイズを埋めます。をクリックし、UIImageView
属性インスペクタのビュー セクションで、モードをスケール トゥ フィルに変更します。自動レイアウトをオフにします。テストするためだけに、シミュレーターにイメージを追加してみてください。画像が横長サイズであることを確認してください。ビルドして実行し、画像ライブラリから画像を選択すると、正方形または設定したその他のサイズに自動的にサイズ変更されますUIImageView
。
上記のほとんどの手順を認識していることは承知していますが、問題を解決するためだけでなく、同様の問題を抱えている可能性のある他の人のためにこの回答を書きました。それがあなたを助けることを願っています。