ظهر بروتوكول UIAppearance في نظام التشغيل iOS 5 في عام 2011 ، في الأوقات البعيدة التي لم يكن فيها Instagram أحد تطبيقات Android ، ولم يتم قطع مسلسل Ned Stark بعد.
حول إداردأرسل إليّ الأسياد غرابًا مع خبر أنهم في وقت إصدار نظام iOS 5 ، كانوا قد قطعوا بالفعل. ولكن حتى لا أفسد العرس الأحمر أو أي شيء آخر ، ربما سأترك كل شيء كما هو.
هناك ما يكفي من المعلومات والدروس والمقالات حول هذا الموضوع ، وكل مطور لنظام iOS للمبتدئين يعرف كيف ولماذا يستخدمه ، لذلك لا تتناول هذه المقالة ذلك. أود أن أتأمل في موضوع الخطأ الذي يحدثه ولماذا لا تولي شركة آبل اهتمامًا به.
كمقدمة صغيرة ، تعتبر المقتطفات من الوثائق التي كانت دائمًا المصدر الرئيسي الموثوق للمعلومات.
يمكنك تخصيص مظهر مثيلات فئة ما عن طريق إرسال رسائل تعديل المظهر إلى وكيل مظهر الفئة.
لدعم تخصيص المظهر ، يجب أن تتوافق فئة ما مع بروتوكول UIAppearanceContainer ، ويجب وضع علامة على طرق الوصول ذات الصلة باستخدام UI_APPEARANCE_SELECTOR
بالنسبة لي ، أفهمها بهذه الطريقة: إذا كنت تريد تغيير المظهر الافتراضي لجميع كائنات الفئة التي تنفذ UIAppearance ، تحقق مما إذا كانت الخاصية تحمل علامة UI_APPEARANCE_SELECTOR ، وانتقل . وفقًا لذلك ، إذا لم تكن الخاصية UI_APPEARANCE_SELECTOR ، فلن يعمل هذا.
ولكن "لا ينجح" لا يعني "لا يمكنك المحاولة" ، لذلك أقترح أن يكون كل شخص مهتم بالقيام بتجربة بسيطة: افتح المشروع الأول الذي تحصل عليه وأضف السطر التالي إلى application:didFinishLaunchingWithOptions:
method:
UIView.appearance().isHidden = true
تقدير ما سيحدث وتشغيل.
أنا ، مثل التجويف ، أتوقع خيارات ممكنة:
- لا شيء يحدث
- لا يحدث شيء ، ولكن سجل مثل "isHidden ليس UI_APPEARANCE_SELECTOR ، غبي" يقع في وحدة التحكم ؛
- التطبيق يمسك خطأ فادحا أو تأكيد مع رسالة مماثلة.
لكن لا ، كل شيء ، بما في ذلك نافذة التطبيق الرئيسية ، يصبح مخفيًا. من ناحية ، فمن المنطقي - ما يتم كتابته يتم. لكن من ناحية أخرى ، يبدو الأمر وكأنه سلوك غير موثق ، ويبدو لي أنه فجوة كبيرة كهذه.
لا يزال بوسعي التوفيق مع حقيقة أنه إذا كان من الممكن تدوير هذه الحيل فقط مع تلك الخصائص التي تؤثر على المظهر ، ولكن يمكن القيام بذلك مع جميع الخصائص !
على سبيل المثال ، بالإضافة إلى الكود الذي تستخدمه المشروعات الأخرى كمكتبة تابعة لجهة خارجية ، إليك سطر يسمى أحيانًا في لحظة عشوائية في الوقت:
UITableView.appearance().delegate = nil
يمكنك إعادة تعيين جميع المفوضين إلى جميع الجداول التي تظهر على الشاشة بعد تنفيذ هذا الرمز.
سيكون للمطورين الكثير من المرح في محاولة لمعرفة ما حدث! بالتأكيد ، يمكنك التوصل إلى شيء أكثر متعة!
آمل حقًا ألا تمر شركة Apple بهذه الأمور دون أن يلاحظها أحد (لم أجد أي معلومات حول هذا الموضوع) ، ويتم الكشف عن حيل مشابهة في مكان ما في مرحلة التحقق التلقائي للتجميع في AppstoreConnect. ولكي أكون صادقًا ، لا أشعر بالتحقق.
مثل هذه الأشياء الرجال. سأكون سعيدًا لمناقشة ما إذا كان شخص ما مهتمًا أيضًا بالموضوع.
سكرتير خاص يعيدني 2011!