在我的应用程序中,有一个地方需要使用相机,所以我调用了
代码如下。
该应用程序的基础是自定义容器视图控制器,类似于导航控制器。当用户导航到页面(我称其为视图和视图控制器的组合)时,它会显示在自定义容器视图上,并将上一页存储在堆栈中。
我的某个页面调用了UIImagePicker。一旦图像选择器关闭并且我返回应用程序时,在打开新页面时整个应用程序出现问题。我并不是在每页都看到问题,但它们存在于多个独立页面上。大多数页面看起来完全没有受到影响,而有问题的页面似乎没有遵守其限制。
UIImagePickerController
。不幸的是,一旦我从控制器返回,大部分图片都是全尺寸显示,而不管它们的UIImageView
属性如何。例外情况似乎是在UITableViewCell
中的UIImageView
。这适用于应用程序中的所有视图,而不仅仅是直接连接到调用UIImagePickerController
的视图控制器的视图。有一次我在研究解决问题时,问题似乎自己消失了,但是我无法复制这个过程。代码如下。
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]){
UIAlertView *errorAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Device has no camera"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[errorAlertView show];
[_app.navController popPage];
}
else if(firstTime){
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
firstTime = false;
[self presentViewController:picker animated:YES completion:NULL];
}
}
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *cameraImage = info[UIImagePickerControllerEditedImage];
[picker dismissViewControllerAnimated:YES completion:NULL];
NSString *folderName = @"redApp";
if([_page hasChild:[RWPAGE FOLDER]]){
folderName = [_page getStringFromNode:[RWPAGE FOLDER]];
}
NSDate *datetimeNow = [[NSDate alloc] init];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd_HH-mm-ss-SSS"];
NSString *filename = [NSString stringWithFormat:@"%@.png",[dateFormatter stringFromDate:datetimeNow]];
NSString *applicationDocumentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *folderPath = [applicationDocumentsDir stringByAppendingPathComponent:folderName];
NSString *filePath = [folderPath stringByAppendingPathComponent:filename];
NSError *error = nil;
if(![[NSFileManager defaultManager] fileExistsAtPath:folderPath isDirectory:nil]){
[[NSFileManager defaultManager] createDirectoryAtPath:folderPath withIntermediateDirectories:NO
attributes:nil error:&error];
}
if(error != nil){
NSLog(@"Create directory error: %@", error);
}
[UIImagePNGRepresentation(cameraImage) writeToFile:filePath options:NSDataWritingAtomic error:&error];
if(error != nil){
NSLog(@"Error in saving image to disk. Error : %@", error);
}
RWXmlNode *nextPage = [_xml getPage:[_page getStringFromNode:[RWPAGE CHILD]]];
nextPage = [nextPage deepClone];
[nextPage addNodeWithName:[RWPAGE FILEPATH] value:filePath];
[_app.navController pushViewWithPage:nextPage];
}
-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
[picker dismissViewControllerAnimated:YES completion:NULL];
[_app.navController popPage];
}
编辑:
进一步说明如下。该应用程序的基础是自定义容器视图控制器,类似于导航控制器。当用户导航到页面(我称其为视图和视图控制器的组合)时,它会显示在自定义容器视图上,并将上一页存储在堆栈中。
我的某个页面调用了UIImagePicker。一旦图像选择器关闭并且我返回应用程序时,在打开新页面时整个应用程序出现问题。我并不是在每页都看到问题,但它们存在于多个独立页面上。大多数页面看起来完全没有受到影响,而有问题的页面似乎没有遵守其限制。