我有一个标签栏控制器,当我点击第三个标签栏按钮时,我会显示一个UIViewcontroller。在这个vc的viewWillAppear中,我展示了一个运行良好的UIImagepickerController。问题是当我打开视图时,我无法立即在屏幕上显示它。首先显示vc,0.4-0.5秒后显示图像拾取器。因此,我想首先介绍图像拾取器,然后在用户拍摄图像后显示vc。我也尝试从viewDidLoad和viewWillAppear调用选择器,但是没有任何改变。
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if (imagePickerWasPresented == NO)
{
imagePickerWasPresented = YES;
self.imagePicker = [[UIImagePickerController alloc] init];
self.imagePicker.delegate = self;
self.imagePicker.allowsEditing = YES;
self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
self.imagePicker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
[self presentViewController:self.imagePicker animated:NO completion:nil];
}
}我是不是打错地方了?
发布于 2015-01-10 05:28:02
我也遇到了同样的问题--直接调用UIImagePicker,而不是先调用VC,再调用UIImagePicker。
拍摄完照片/视频后:
- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {}你将转到这个标准的委托方法,从这里调用VC。这样一来,你会立即转到ImagePicker,并且只有一个过渡,之后你会选择对所获取的内容做一些不那么令人沮丧/丑陋的事情。
发布于 2015-01-10 03:38:01
不,你在一个合适的地方调用它,这就是iOS如何做的;如果你把多个模态放在一起,一个接一个地呈现,包括动画。对您的问题有效的解决方案是提供UINavigationController而不是您的UIViewController。设置导航控制器,使viewcontroller作为根视图控制器,但也将imagepickercontroller推送到堆栈上。呈现这个navigationcontroller,它应该会直接转到imagepickercontroller。否则,尝试在动画设置为NO的情况下同时显示uiviewcontroller和imagepickercontroller,看看是否有效。
发布于 2015-01-10 04:36:21
试试这个,看看它能让你有多近,然后适应你的需求。当我对它进行快速测试时,它似乎做了您想要的事情。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] ;
UIViewController * vc = [[UIViewController alloc] init];
vc.view.backgroundColor = [UIColor whiteColor];
UINavigationController * navigationController = [[UINavigationController alloc] init];
[navigationController pushViewController:vc animated:NO];
UITabBarController * tabBarController = [[UITabBarController alloc] init];
NSArray* controllers = [NSArray arrayWithObjects:navigationController, nil];
tabBarController.viewControllers = controllers;
tabBarController.delegate = self;
UIImagePickerController *imagePicker =
[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =
UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.mediaTypes = [NSArray arrayWithObjects:
(NSString *) kUTTypeImage,
nil];
imagePicker.allowsEditing = NO;
self.window.rootViewController = tabBarController;
[self.window makeKeyAndVisible];
[vc presentViewController:imagePicker animated:NO completion:nil];
return YES;
}https://stackoverflow.com/questions/27867738
复制相似问题