قم بتشغيل UiActivityIndicatorView بينما يكون الخيط الرئيسي مشغولاً
-
25-09-2019 - |
سؤال
هل هناك طريقة لعرض عجلة الغزل المتحركة بينما يقوم الخيط الرئيسي بإجراء عملية طويلة؟ يتم التعامل مع الرسوم المتحركة بواسطة نفس الخيط الذي أنشأ UiActivityIndicatorView ، أليس كذلك؟ إذا كان الأمر كذلك ، فهل يمكن للآراء التي تنتمي إلى عدة مؤشرات ترابط الجلوس في نفس العرض الهرمي؟
كل ما فشل ، لا أمانع في نقل عملية طويلة إلى موضوع خلفية ، ولكن بعد ذلك يجب أن أتجمد واجهة المستخدم بطريقة أو بأخرى أثناء تشغيلها. لست متأكدًا من كيفية القيام به.
تحرير: "مطول" حوالي 2 ثانية على جهاز الجيل الأول.
المحلول
يتمثل الحل في بدء تشغيل الرسوم المتحركة على الأقل من خلال حلقة التشغيل قبل تشغيل العملية الطويلة. علي سبيل المثال:
[activity startAnimating];
[self performSelector:@selector(lengthyOperation) withObject:nil afterDelay:0];
ليس عليك استخدام performSelector
الطريقة ، مجرد طريقة لضبط طريقة التشغيل في وقت لاحق لذا فإن مؤشر النشاط لديه فرصة لبدء الرسوم قبل أن تنشغل.
نصائح أخرى
الإجابة الصحيحة هي بالتأكيد نقل العملية الطويلة إلى مؤشر ترابط الخلفية وجعلها تواصل إلى الخيط الرئيسي عند الانتهاء. إذا كنت لا تعرف كيفية القيام بذلك ، فاقرأ NSOperationQueue
و NSInvocationOperation
. سوف يشكرك تطبيقك ومستخدميك على الحد الأدنى من الوقت الذي سيستغرقه التعلم.