Оказывается, это только проблема в режиме отладки (когда iPhone подключен и работает через XCode). Как только одно и то же приложение работает без подключения к XCode, задержка не происходит.
UiimagePickerController действительно медленно при вызове alloc init
-
25-08-2022 - |
Вопрос
У меня есть контроллер представления, который представлен при нажатии на одну из вкладок в TabBarController. В этом контроллере представления я инициализую UIImagePickerController в методе ViewDidload:
- (void)viewDidLoad
{
[super viewDidLoad];
//Set imagePicker
//-------------------------//
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.delegate = self;
_imagePicker.videoMaximumDuration = 10.0f;
}
Затем намерение состоит в том, чтобы отобразить UiimagePickerController позже, когда нажата кнопка. По какой-то причине, хотя, когда значок вкладки нажимается для этого контроллера представления, существует 3-4-секундная подвеска, в то время как этот метод просмотра работает. Когда я комментирую строку _imagepicker = [[uiimagepickercontroller alloc] init] нет времени подвески, и контроллер представления немедленно загружается - как и должно.
Кто -нибудь знает, зачем распределять и инициализацию, что UIImagePickerController занимает так много времени? Если да, то есть ли способ ускорить его, кроме как запустить его в качестве фонового процесса? Кажется, что это не нормальное поведение.
Я использую iOS7, и я не называю ViewWillAppear или ViewDidapear.
Решение
Другие советы
Попробуйте это ios 12
//show a HUD or activityIndicator
dispatch_async(dispatch_queue_create("openPhotosCamera", NULL), ^{
UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
dispatch_async(dispatch_get_main_queue(), ^{
//hide HUD or activityIndicator
[presenter presentViewController:mediaUI animated:YES completion:nil];
});
});
** Докладчик - это YourViewController / Self
Попробуй это.
- (void)viewDidLoad{
//Set imagePicker
//-------------------------//
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.delegate = self;
_imagePicker.videoMaximumDuration = 10.0f;
[super viewDidLoad];