いくつかのフィールド (名前、価格、カテゴリ) とセグメント化されたコントロールを含むビューと、写真を撮るためのこのボタンがあります。
シミュレーター (カメラなし) でこれを試すと、正しく動作します。カメラ ロールから画像を選択して編集し、ビューに戻ると、すべてのフィールドとその内容が表示されます。
しかし、私のiPhoneでは、編集後に画像を選択してビューに戻ると、UIImageView以外のすべてのフィールドが空になります。
また、フィールドの内容を変数に保存して「viewWillApper」メソッドに戻そうとしましたが、アプリがクラッシュします。
以下に何か間違った方法があるのではないかと考え始めます
編集
ここで解決策を見つけました。UIImage クラスに新しいメソッドを定義しました。(詳細については、リンクをたどってください)。
次に、UIImageView のフレームを新しい次元 (横向きまたは縦向き) に適応させる作業を行いました。
-(IBAction)takePhoto:(id)sender {
if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) {
self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imgPicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
} else {
imgPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
}
[self presentModalViewController:self.imgPicker animated:YES];
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
NSDate *date = [NSDate date];
NSString *photoName = [dateFormatter stringFromDate:date];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUs erDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
imagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", photoName]];
UIImage *picture = [info objectForKey:UIImagePickerControllerOriginalImage];
// ---------RESIZE CODE--------- //
if (picture.size.width == 1936) {
picture = [picture scaleToSize:CGSizeMake(480.0f, 720.0f)];
} else {
picture = [picture scaleToSize:CGSizeMake(720.0f, 480.0f)];
}
// --------END RESIZE CODE-------- //
photoPreview.image = picture;
// ---------FRAME CODE--------- //
photoPreview.contentMode = UIViewContentModeScaleAspectFit;
CGRect frame = photoPreview.frame;
if (picture.size.width == 480) {
frame.size.width = 111.3;
frame.size.height =167;
} else {
frame.size.width = 167;
frame.size.height =111.3;
}
photoPreview.frame = frame;
// --------END FRAME CODE-------- //
NSData *webData = UIImagePNGRepresentation(picture);
CGImageRelease([picture CGImage]);
[webData writeToFile:imagePath atomically:YES];
imgPicker = nil;
}
今、私は新しい問題を抱えています!横向きで写真を撮り、縦向きで別の写真を撮ろうとすると、アプリがクラッシュします。何かを解放しなければなりませんか?