قم بتشغيل UiActivityIndicatorView بينما يكون الخيط الرئيسي مشغولاً

StackOverflow https://stackoverflow.com/questions/2391343

سؤال

هل هناك طريقة لعرض عجلة الغزل المتحركة بينما يقوم الخيط الرئيسي بإجراء عملية طويلة؟ يتم التعامل مع الرسوم المتحركة بواسطة نفس الخيط الذي أنشأ UiActivityIndicatorView ، أليس كذلك؟ إذا كان الأمر كذلك ، فهل يمكن للآراء التي تنتمي إلى عدة مؤشرات ترابط الجلوس في نفس العرض الهرمي؟

كل ما فشل ، لا أمانع في نقل عملية طويلة إلى موضوع خلفية ، ولكن بعد ذلك يجب أن أتجمد واجهة المستخدم بطريقة أو بأخرى أثناء تشغيلها. لست متأكدًا من كيفية القيام به.

تحرير: "مطول" حوالي 2 ثانية على جهاز الجيل الأول.

هل كانت مفيدة؟

المحلول

يتمثل الحل في بدء تشغيل الرسوم المتحركة على الأقل من خلال حلقة التشغيل قبل تشغيل العملية الطويلة. علي سبيل المثال:

[activity startAnimating];
[self performSelector:@selector(lengthyOperation) withObject:nil afterDelay:0];

ليس عليك استخدام performSelector الطريقة ، مجرد طريقة لضبط طريقة التشغيل في وقت لاحق لذا فإن مؤشر النشاط لديه فرصة لبدء الرسوم قبل أن تنشغل.

نصائح أخرى

الإجابة الصحيحة هي بالتأكيد نقل العملية الطويلة إلى مؤشر ترابط الخلفية وجعلها تواصل إلى الخيط الرئيسي عند الانتهاء. إذا كنت لا تعرف كيفية القيام بذلك ، فاقرأ NSOperationQueue و NSInvocationOperation. سوف يشكرك تطبيقك ومستخدميك على الحد الأدنى من الوقت الذي سيستغرقه التعلم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top