تبين أن هذه ليست سوى مشكلة عندما يكون في وضع التصحيح (عندما يتم توصيل iPhone وتشغيله عبر XCode). بمجرد تشغيل التطبيق نفسه دون توصيله بـ Xcode ، لا يحدث التأخر.
UiimagePickerController بطيئة حقًا عند استدعاء 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 ثانية أثناء تشغيل طريقة ViewDidload هذه. عندما أتعلق بالخط _imagePicker = [[uiimagePickerController inist] init] لا يوجد وقت تعليق ويتم تحميل وحدة تحكم العرض على الفور - كما ينبغي.
هل يعرف أي شخص لماذا تخصيص وتهيئة uiimagePickerController يستغرق وقتًا طويلاً؟ إذا كان الأمر كذلك ، هل هناك طريقة لتسريعها بخلاف تشغيلها كعملية خلفية؟ يبدو أن هذا ليس سلوكًا طبيعيًا.
أنا أستخدم iOS7 ، وأنا لا أدعو ViewWillAppear أو ViewDidAppear.
المحلول
نصائح أخرى
جرب هذا 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];