對不起。它不是連續的,它是拍攝照片,取出並釋放相機,然後用戶選擇A,B或C選項(它們會在整個過程中提示選擇許多東西),然後他們可以拍攝另一張照片,取出並釋放相機。 ..等等......這些事情發生了幾次,他們完成了所有的數據輸入。
他們選擇相機後,我稱之爲代碼。我沒有在dealloc方法中釋放圖像選擇器。
- (void)openCamera {
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
{
imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:imagePicker animated:YES];
[imagePicker release];
}
}
從相機我叫下面的代碼,他們「用」拍攝的照片後。它基於圖像的原始大小調整圖像大小。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *tempCameraImage = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[picker dismissModalViewControllerAnimated:YES];
CGFloat originalSize = tempCameraImage.size.width * tempCameraImage.size.height;
NSLog(@"Original Size %f", originalSize);
if (originalSize > 2500000.0) {
CGSize size = tempCameraImage.size;
CGRect rect = CGRectMake(0.0, 0.0, .23 * size.width, .23 * size.height);
UIGraphicsBeginImageContext(rect.size);
[tempCameraImage drawInRect:rect];
theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGFloat totalSize = theImage.size.width * theImage.size.height;
NSLog(@"Final Camera Size %f", totalSize);
[self resizeImageCamera];
return;
}
else {
CGSize size = tempCameraImage.size;
CGRect rect = CGRectMake(0.0, 0.0, .27 * size.width, .27 * size.height);
UIGraphicsBeginImageContext(rect.size);
[tempCameraImage drawInRect:rect];
theImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGFloat totalSize = theImage.size.width * theImage.size.height;
NSLog(@"Final Camera Size %f", totalSize);
[self resizeImageCamera];
return;
}
}
-(void)resizeImageCamera {
if (editingImage1) {
NSManagedObject *image = [NSEntityDescription insertNewObjectForEntityForName:@"Image" inManagedObjectContext:slideshow.managedObjectContext];
slideshow.image = image;
[image setValue:theImage forKey:@"image"];
CGSize size = theImage.size;
CGRect rect = CGRectMake(0.0, 0.0, .15 * size.width, .15 * size.height);
UIGraphicsBeginImageContext(rect.size);
[theImage drawInRect:rect];
slideshow.thumbnailImage1 = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[self finishCameraImage];
return;
}
}
-(void)finishCameraImage {
if (editingImage1) {
keyInt = @"2";
[editedObject setValue:keyInt forKey:@"script1"];
pictureView.alpha = 0;
self.navigationItem.rightBarButtonItem = nil;
editedFieldKey = @"line2Int";
editedFieldName = NSLocalizedString(@"line2Int", @"display name for line2");
self.title = editedFieldName;
linePicker.hidden = NO;
}
我知道我做了很多這樣的形象。如果我投入幾次延遲會有幫助嗎?
來源
2010-06-14 21:19:08
Sam
你肯定有什麼錯,僅僅是因爲你可以在正常使用相機時幾乎無限期地繼續拍照。除非在SDK中有一些錯誤的行爲,但我敢肯定,沒有什麼是嚴重的 - 至少如果您在Google上找不到任何信息。 – 2010-06-14 20:27:18
發佈您的代碼我們可能會幫助 – Daniel 2010-06-14 20:28:03
謝謝,代碼剛剛發佈 – Sam 2010-06-14 21:19:32