Dit blyk dat dit slegs 'n probleem is in die ontfoutmodus (wanneer die iPhone gekoppel is en deur Xcode loop). Sodra dieselfde app loop sonder om aan XCODE gekoppel te word, kom die vertraging nie voor nie.
UiImagePickerController is regtig stadig as u die Alloc Init bel
-
25-08-2022 - |
Vra
Ek het 'n View -beheerder wat aangebied word om op een van die oortjies in 'n TabbarController te druk. In hierdie aansigbeheerder initialiseer ek 'n uiImagePickerController in die ViewDidload -metode:
- (void)viewDidLoad
{
[super viewDidLoad];
//Set imagePicker
//-------------------------//
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.delegate = self;
_imagePicker.videoMaximumDuration = 10.0f;
}
Die bedoeling is om dan die UIImagePickerController te vertoon op 'n later tydstip wanneer 'n knoppie ingedruk word. Om die een of ander rede, al is die tab-ikoon vir hierdie View Controller gedruk, is daar 'n 3-4 sekondes hang, terwyl hierdie ViewDidload-metode loop. As ek die reël _ImagePicker = [[UiImagePickerController alloc] init] kommentaar lewer, is daar geen hangtyd nie en die aansigbeheerder laai onmiddellik - soos dit moet.
Weet iemand waarom die toewysing en initialisering van die UIImagePickerController so lank neem? Indien wel, is daar 'n manier om dit te bespoedig, anders as om dit as 'n agtergrondproses te laat loop? Dit wil voorkom asof dit nie normale gedrag is nie.
Ek gebruik iOS7, en ek noem nie ViewWillappear of ViewDidappear nie.
Oplossing
Ander wenke
Probeer hierdie 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];
});
});
** Aanbieder is jou ViewController / self
Probeer hierdie.
- (void)viewDidLoad{
//Set imagePicker
//-------------------------//
_imagePicker = [[UIImagePickerController alloc] init];
_imagePicker.delegate = self;
_imagePicker.videoMaximumDuration = 10.0f;
[super viewDidLoad];