دائرة الرقابة الداخلية 13 تحت العدسة المكبرة

النوع الديناميكي جيد ، لكنه لا يعمل دائمًا. الآن سوف أخبرك كيف تزداد أدوات التحكم الصغيرة في iOS 13 مجانًا ، دون تسجيل ورسائل نصية قصيرة.


في مقال سابق ، قمنا بسحب نوع dynamik في قائمة تطبيق Dodo Pizza iOS. اتضح بشكل جيد. لكن شريط علامات التبويب الموجود أسفل القائمة كان صغيراً كما كان - لم يتغير اعتمادًا على إعداد حجم النص.


لم تصل هذه الميزة بعد إلى الإصدار الذي أشعر بالخجل والعار

"ولكن كيف يتم ذلك ، دودو؟" لا يهمك الأشخاص ضعاف البصر؟
- اسف!

قليلا عن وضع المدمج في "المكبر"


يعرض شريط علامات تبويب النظام معاينة لكل علامة تبويب طويلة. حاول تضمين حجم النص "المتاح" ، ثم اضغط لفترة طويلة على أي علامة تبويب في علامة تبويب النظام (على سبيل المثال ، في الموسيقى أو في الصور). ستظهر النافذة المنبثقة التالية على الشاشة:


بالإضافة إلى شريط التبويب ، يتم دعم وضع "العدسة المكبرة" بواسطة أزرار في أشرطة الأدوات وأشرطة الأدوات:


حقول البحث:


وبعض الضوابط أكثر.

وبدءًا من iOS 13 ، يمكننا بسهولة إضافة نفس السلوك إلى عناصر التحكم الخاصة بنا.

كيفية ربط UILargeContentViewerItem إلى التطبيق


لسوء الحظ ، فإن هذا البروتوكول موصوف بشكل سيئ في الوثائق ، لكن هذا لا يهم ، لأن API الخاصة به تبدو بسيطة:

@available(iOS 13.0, *) public protocol UILargeContentViewerItem : NSObjectProtocol { var showsLargeContentViewer: Bool { get } var largeContentTitle: String? { get } var largeContentImage: UIImage? { get } var scalesLargeContentImage: Bool { get } var largeContentImageInsets: UIEdgeInsets { get } } 

يكفي تنفيذ العديد من هذه الأساليب ، التي تتحدث عنها أسماء لنفسها ، وسيظهر عنصر التحكم لديك معاينة كبيرة عند النقر لفترة طويلة.

تنفيذ بسيط جدا


دعنا نجرب هذا البروتوكول على بعض الزر في التطبيق. على سبيل المثال ، في الزر i في بطاقة المنتج:


أضف 3 سطور من الكود:

 nutritionButton.showsLargeContentViewer = true nutritionButton.addInteraction(UILargeContentViewerInteraction()) nutritionButton.largeContentTitle = nutritionButton.accessibilityValue 


القيام به. بارد ، هاه؟

هنا فقط هو أيقونة الزوج ، والتي يتم سحبها بشكل افتراضي ، أنا لا أحب. سيكون أفضل إذا لم يكن اللونين ، ولكن أحادي اللون مع الشكل المقطوع للحرف i . يستخدم هذا فقط لحالة الزر .highlighted.

 nutritionButton.largeContentImage = nutritionButton.image(for: .highlighted) 


المعايير.

والآن دعنا نختتم التمديد:

 extension UIView { public func enableLargeContent(title: String? = nil, image: UIImage? = nil, scales: Bool = true, insets: UIEdgeInsets = .zero) { guard !showsLargeContentViewer else { return } showsLargeContentViewer = true addInteraction(UILargeContentViewerInteraction()) largeContentTitle = title largeContentImage = image scalesLargeContentImage = scales largeContentImageInsets = insets } } 

 nutritionButton.enableLargeContent(title: nutritionButton.accessibilityValue, image: nutritionButton.image(for: .highlighted)) 

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

أعيد صياغتها: استخدم هذه الميزة فقط كملجأ أخير ، عندما لا يمكنك زيادة التحكم على الإطلاق.
تتوفر الوثائق الخاصة بهذا الأمر بالكامل في Xcode في حالة فتح واجهة UILargeContentViewerItem .


مشروع تجريبي في بلدي الريبو على جيثب

Source: https://habr.com/ru/post/ar463151/


All Articles