
22:35. بهجة
تم الاطلاع على ملاحظات WWDC 2019 الرئيسية. أصبحت واجهة المستخدم التصريحية المتوقعة حقيقة ، وهذا حقًا حدث عالمي لعالم تطوير iOS. "أعتقد أننا بحاجة إلى كتابة مقال حول هذا الموضوع" ، فكرت ، وهناك الآلاف من مطوري iOS حول العالم في تمجيد.
05:30. الدروس
Swift UI - إطار جديد تم تطويره من قِبل Apple ، مكتوبًا في Swift ، وهو مصمم لوصف UI في التعليمات البرمجية.
لقد لاحظت أن Yabloko تزداد برودة وبرودة كل عام من حيث الوثائق. هذه المرة ، تحت Swift UI ، رأوا بعض البرامج التعليمية كاملة مع إضافة خطوة بخطوة وعرض تفاعلي للنتيجة على العرض ، وفي النهاية أضافوا بعناية أسئلة التحكم لتعزيز النتائج. حسنا ، مجرد حكاية خرافية! هناك أيضا روابط لمشاريع المثال.

! جميلة
لن أقوم برواية البرنامج التعليمي باللغة الروسية ، فمن الأفضل في هذا الشكل الجميل أن نضعه في المصدر الأصلي. سوف أصف انطباعاتي وملاحظاتي حول هذه القصة بأكملها مع Swift UI وانغمس فيها قليلاً.
07:00 صباحًا تركيب
يحتوي Xcode الجديد على وضع جديد لتحرير الكود - Editor And Canvas.

لم أشاهد اللوحة في وقت واحد - ولهذا لا يكفي تنزيل Xcode 11.0 ، فأنت بحاجة أيضًا إلى تحديث Makos إلى 10.15. بدونها ، سيعمل Xcode ، ولكن بدون مسرات قماش ، وربما شيء آخر.
كنت سعيدًا أنه عند تحديد الرمز ، يتم أيضًا تمييز العنصر المقابل في اللوحة القماشية.
محور جديد ، أطلقت exampl'y. هل تنهار؟ حسنًا ، نعم. هل تسقط الإضاءة الخلفية؟ لا ، بالطبع - لم يحدث الشيء نفسه في Xcode ؛) لكن اللوحة تعمل ، وتنعكس تغييرات العرض على الفور ، إذا لم تكن هذه جدولًا يحتوي على خلايا معقدة.

09:22. مشروع جديد
عند إنشاء مشروع جديد ، أصبح خيار استخدام Swift UI متاحًا الآن ويتم إنشاء المشروع بالتهيئة المناسبة.

SceneDelegate
ملف SceneDelegate
الجديد على SceneDelegate
، حيث يتم إنشاء النافذة وطريقة عرض الجذر. ولكن في AppDelegate
، لا توجد كلمة عنه. ولكن هناك طريقة جديدة تنشئ تكوين UISceneConfiguration
:
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
حسنًا ، Default Configuration
نفسه موجود في Info.plist
SceneDelegate
إلى SceneDelegate
هناك. كل شيء سقط في مكانه.

لكن العودة إلى SceneDelegate
- الإطلاق يحدث فيه.
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
UIHostingController
هو UIHostingController
generic UIViewController
منتظم يمكن أن يحتوي على أي نوع من المحتوى بموجب بروتوكول View
الجديد
open class UIHostingController<Content> : UIViewController where Content : View { /// }
بروتوكول View
فاحش:
public protocol View : _View { associatedtype Body : View var body: Self.Body { get } }
وهذا هو ، فهو يحتاج فقط إلى تنفيذ body
.
ولكن الحيلة تكمن في أن الكثير من الامتدادات مكتوبة على بروتوكول View
هذا ، على سبيل المثال ، للإيماءات المعلقة ، لتتبع مظهر واختفاء العرض من الشاشة ، المسافات البادئة ، الإطارات ، وأكثر من ذلك بكثير. تستطيع أن ترى كل هذا في قفص الاتهام مشاهدة | وثائق المطور أبل . هذا يعني أن أي عرض قمت بإنشائه (بموجب بروتوكول View
) خارج الصندوق يحصل على مجموعة من جميع أنواع القوى العظمى!
دعنا ContentView.swift
إلى ContentView.swift
.
struct ContentView : View { var body: some View { Text(«Hello World») } }
الأمر بسيط: نقوم بإنشاء طريقة عرض من طرق العرض والتحكم التي تم تنفيذها بالفعل | وثائق المطور أبل . يمكن أن يجعل الأمر أكثر تعقيدًا باستخدام حاويات مختلفة توثيق مطور Apple والرأي الذي أنشأناه بالفعل.
تعد Layout with Swift UI قصة منفصلة حول العديد من المواد التي سيتم كتابتها ، كما تمتلك Apple أيضًا برنامجًا تعليميًا رائعًا. لن أسهب في ذلك. دعنا نعود إلى الجزء الثاني من ContentView.swift
، هناك مثل هذا الرمز:
#if DEBUG struct ContentView_Previews : PreviewProvider { static var previews: some View { ContentView() } } #endif
من الواضح من الاسم أنه هو المسؤول عن ما يتم عرضه في اللوحة - previews
، في حالتنا ، ContentView()
.
دعنا نحاول إنشاء شاشة مع جدول بدائي:
struct ContentView : View { var birds: [Birds] = [] var body: some View { List(birds) { bird in Text(verbatim: bird.name) } } }
هذا كل شيء. القيام به. بسيطة ، موجزة ، أنيقة. هنا هو كل سحر UI التعريفي!
يمكن ملاحظة أن List
عبارة عن طاولة أسفل الغطاء. ولكن ليس UITableView ، ولكن بعض UpdateCoalesingTableView.

ومن الواضح أيضًا أنه لا يوجد تخطيط تلقائي. لا يوجد أي تعارض ، كل شيء على إطارات ، مما يعني أنه لا توجد هذه الأنظمة المعقدة مع المعادلات الخطية ومجموعة من العمليات الحسابية. ولكن ، من ناحية أخرى ، فإن التخطيط قابل للتكيف ويتم حساب الإطار بطريقة أو بأخرى - دعنا نرى في جلسات WWDC المستقبلية كيف بالضبط.
Swift UI - هل هو غلاف على UIKit؟ نعم ولا في نفس الوقت ، على ما يبدو.
قام جو جروف بتغريد ما يلي:
"بعض الكيانات عبارة عن مغلفات فوق طرق عرض UI / NS ، لكن حقيقة قيامهم بذلك ونوع الرؤية التي يلتفون عنها هي شيء يمكن أن يتغير."
الأصل:
تقوم بعض الأشياء بتغطية طرق عرض UI / NS ، ولكن ما إذا كانت تفعل ذلك ونوع طريقة العرض التي يتم التفافها ، عرضة للتغيير. من الأفضل التفكير في الأمر كشيء مميز.
ما لاحظته أكثر:
11 صباحًا في المجموع
للأسف ، كل هذه السحر
@available (iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
وهذا يعني أن التحول إليهم هو التخلي عن المحاور القديمة ، التي تعتبر جذرية وخالية من الاهتمام للمستخدم.
أنا متأكد من أن الآلية لا تزال خامًا ، وسيكون هناك العديد من التغييرات ، والكثير من الأخطاء ستظهر ، وهذا أمر طبيعي. ولكن في غضون عام أو عامين سيكون من الممكن تنفيذه في المنتج.
Swift UI هي ثورة مباشرة في عالم الأشخاص الذين يطلقون على أنفسهم مطوري iOS ، ومن الرائع أن هذا الطريق الجديد ، وإن لم يكن مثاليًا ، قد فتح.
في غضون ذلك ، لا شيء يمنعك من استخدام هذا في مشاريع الحيوانات الأليفة ، والحصول على يدك والحصول على المتعة الجمالية :)