OpenSwiftui
OpenSwiftui هو تطبيق OpenSource لـ Swiftui DSL من Apple (لغة خاصة بالمجال).
هدف المشروع هو البقاء على مقربة من واجهة برمجة التطبيقات الأصلية قدر الإمكان.
حاليا ، هذا المشروع في التطوير المبكر.
خلفية
قدمت Apple Swiftui في WWDC 19. ومنذ ذلك الحين ، أصبح تطوير التطبيقات مع واجهات المستخدم الرسومية أكثر راحة للقراءة والكتابة والصيانة. لسوء الحظ ، فإن مبدأ "التعلم مرة واحدة ، تقدم في أي مكان" يعمل على منصات Apple ، فقط.
يعمل Swift على منصات Apple ، ويب ، Linux ، Windows ، وحتى على الأجهزة المدمجة. ألن يكون الأمر رائعًا إذا تمكنت من كتابة تطبيقات قائمة على واجهة المستخدم الرسومية مع Swiftui على المنصات التي تعمل بسرعة؟
Swiftui على منصتك
يوفر OpenSwiftui واجهة برمجة التطبيقات - يمكن للمشاريع الأخرى تنفيذ العرض الفعلي لعناصر واجهة المستخدم لمنصات مختلفة مثل Linux و Windows و Libedded وغيرها الكثير.
SwiftuieMbedded هو أحد المشاريع الأولى التي تستخدم OpenSwiftui (العرض التوضيحي).
المساهمة
بمرور الوقت والتخمين الجماعي ، يجب أن يكون من الممكن إعادة إنشاء واجهة برمجة تطبيقات Swiftui الكاملة من Apple. تحقق من نظرة عامة على الحالة لمعرفة ما هو مفقود أو يجب إكماله.
تتمثل نقطة البداية الجيدة في التعرف على واجهة Swiftui ، والتركيز على بعض الوظائف ، ومحاولة إعادة تنفيذها. تتمثل الأداة المفيدة في استخدام الانعكاس ( Mirror(reflecting: …) ) لإلقاء نظرة خاطفة على أنواع ومحالات Swiftui. هذا يكشف عن الهيكل الداخلي للحالات (الخصائص والأنواع والأسماء والميراث).
بمجرد تنفيذ قطعة مفقودة ، لا تتردد في المساهمة في طلب سحب.
يرجى الملاحظة:
يجب أن تسبق الأساليب الخاصة وخصائص Swiftui من قبل _ (تحت السطحية) وتمييزها كجمهور في OpenSwiftui. القيام بذلك ضروري لأن الواجهة الأمامية قد تحتاج إلى الوصول.
Xcode 11.2 أو أعلى مطلوب.
حالة
وجهات النظر والضوابط
الضروريات
| حالة | اسم | ملحوظات |
|---|
| ✅ | protocol View | |
نص
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct Text | |
| struct TextField | |
| struct SecureField | |
| ✅ | struct Font | |
الصور
| حالة | اسم | ملحوظات |
|---|
| ️ | struct Image | cgimage غير مدعوم |
أزرار
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct Button | |
| struct NavigationLink | |
| struct MenuButton | |
| struct EditButton | |
| struct PasteButton | |
محددات القيمة
| حالة | اسم | ملحوظات |
|---|
| struct Toggle | |
| ️ | struct Picker | |
| struct DatePicker | |
| struct Slider | |
| ️ | struct Stepper | |
الأنواع الداعمة
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct ViewBuilder | |
| ✅ | protocol ViewModifier | |
عرض التصميم والعرض التقديمي
مداخن
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct HStack | |
| ✅ | struct VStack | |
| ✅ | struct ZStack | |
قوائم ووجهات نظر التمرير
| حالة | اسم | ملحوظات |
|---|
| struct List | |
| protocol DynamicViewContent | |
| ✅ | protocol Identifiable | المقدمة من سويفت. |
| ✅ | struct ForEach | |
| struct ScrollView | |
| ️ | enum Axis | |
مشاهدات الحاوية
| حالة | اسم | ملحوظات |
|---|
| struct Form | |
| ️ | struct Group | |
| struct GroupBox | |
| struct Section | |
فاصل وفواصل
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct Spacer | |
| ✅ | struct Divider | |
وجهات النظر المعمارية
| حالة | اسم | ملحوظات |
|---|
| struct NavigationView | |
| struct TabView | |
| struct HSplitView | |
| struct VSplitView | |
العروض التقديمية
| حالة | اسم | ملحوظات |
|---|
| struct Alert | |
| struct ActionSheet | |
عناصر مرئية مشروطة
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct EmptyView | |
| struct EquatableView | |
وجهات النظر المستخدمة بشكل غير متكرر
| حالة | اسم | ملحوظات |
|---|
| ️ | struct AnyView | init?(_fromValue value: Any) مفقودة. |
| ✅ | struct TupleView | |
الرسم والرسوم المتحركة
الضروريات
| حالة | اسم | ملحوظات |
|---|
| ️ | protocol Shape | |
الرسوم المتحركة
| حالة | اسم | ملحوظات |
|---|
| struct Animation | |
| protocol Animatable | |
| protocol AnimatableModifier | |
| func withAnimation<Result>(Animation?, () -> Result) -> Result | |
| struct AnimationPair | |
| struct EmptyAnimationData | |
| struct AnyTransition | |
الأشكال
| حالة | اسم | ملحوظات |
|---|
| ️ | struct Rectangle | |
| ✅ | enum Edge | |
| struct RoundedRectangle | |
| ️ | struct Circle | |
| struct Ellipse | |
| struct Capsule | |
| struct Path | |
أشكال تحولت
| حالة | اسم | ملحوظات |
|---|
| protocol InsettableShape | |
| struct ScaledShape | |
| struct RotatedShape | |
| struct OffsetShape | |
| struct TransformedShape | |
الدهانات والأساليب والتدرجات
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct Color | |
| struct ImagePaint | |
| struct Gradient | |
| struct LinearGradient | |
| struct AngularGradient | |
| struct RadialGradient | |
| struct ForegroundStyle | |
| struct FillStyle | |
| protocol ShapeStyle | |
| enum RoundedCornerStyle | |
| struct SelectionShapeStyle | |
| struct SeparatorShapeStyle | |
| struct StrokeStyle | |
الهندسة
| حالة | اسم | ملحوظات |
|---|
| struct GeometryProxy | |
| struct GeometryReader | |
| protocol GeometryEffect | |
| struct Angle | |
| struct Anchor | |
| struct UnitPoint | |
| enum CoordinateSpace | |
| struct ProjectionTransform | |
| protocol VectorArithmetic | |
تدفق الدولة والبيانات
روابط
| حالة | اسم | ملحوظات |
|---|
| ️ | struct Binding | |
طرق عرض تعتمد على البيانات
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct State | |
| struct ObservedObject | |
| struct EnvironmentObject | |
| struct FetchRequest | |
| struct FetchedResults | |
| ️ | protocol DynamicProperty | func update() مفقود. |
قيم البيئة
| حالة | اسم | ملحوظات |
|---|
| ✅ | struct Environment | |
| ✅ | struct EnvironmentValues | |
التفضيلات
| حالة | اسم | ملحوظات |
|---|
| protocol PreferenceKey | |
| struct LocalizedStringKey | |
المعاملات
| حالة | اسم | ملحوظات |
|---|
| struct Transaction | |
إيماءات
الإيماءات الأساسية
| حالة | اسم | ملحوظات |
|---|
| struct TapGesture | |
| struct LongPressGesture | |
| struct DragGesture | |
| struct MagnificationGesture | |
| struct RotationGesture | |
إيماءات مجتمعة
| حالة | اسم | ملحوظات |
|---|
| struct SequenceGesture | |
| struct SimultaneousGesture | |
| struct ExclusiveGesture | |
لفتة مخصصة
| حالة | اسم | ملحوظات |
|---|
| protocol Gesture | |
| struct AnyGesture | |
خصائص العرض الديناميكي
| حالة | اسم | ملحوظات |
|---|
| struct GestureState | |
| struct GestureStateGesture | |
دعم لفتة
| حالة | اسم | ملحوظات |
|---|
| struct GestureMask | |
| struct EventModifiers | |
أسطورة
| رمز | وصف |
|---|
| ✅ | منتهي |
| يفتح |
| ️ | غير مكتمل |
موارد
واجهة Swiftui
مقارنة بما يمكنك رؤيته في XCode ، يوضح لك هذا GIST أكثر من مجرد واجهات عامة. يوضح الخصائص الخاصة ، وجسم الخصائص والوظائف والمهيمنة @inlinable .
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/SwiftUI.framework/Versions/A/Modules/SwiftUI.swiftmodule/x86_64.swiftinterface
Swiftwebui
SwiftWebui هو تطبيق Swiftui للويب بواسطة Helge Heß. يركز هدف هذا المشروع حصريًا على الويب. إنه ينحرف قليلاً عن Swiftui من خلال أخذ بعض الاختصارات هنا وهناك - ولكن يبدو كاملاً تمامًا في الوظائف وهو أمر رائع للإلهام.
رموز سويفتوي
يطبع هذا الأمر جدول رمز Swiftui عبر الأداة المساعدة llvm-mn .
nm -gUj /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/Frameworks/SwiftUI.framework/SwiftUI | swift-demangle | sed ' s/SwiftUI.//g ' | sed ' s/Swift.//g '
يمكنك أيضًا إلقاء نظرة على هذا الجوهر بدلاً من ذلك.
الروابط
- SwiftuiviewBuilder نتيجة TupleView ، كيف تستخدم Apple وقادرة على تجنب تحويل الأشياء إلى أيرض؟
- https://stackoverflow.com/questions/56434549/what-enables-swiftuis-dsl
- بناء مناظر مخصصة مع Swiftui
- Swiftui Essentials
- تدفق البيانات من خلال Swiftui
- تقديم Swiftui: بناء تطبيقك الأول
- Swiftui على جميع الأجهزة
شكر خاص
أريد أن أقدم شكرًا خاصًا لـ Helge Heß. قام بإنشاء Swiftwebui ، وساهم في العديد من الاقتراحات إلى OpenSwiftui ، وساعد في رؤى النتائج التي توصل إليها.
اتصال
- Devran "Cosmo" Uenal
- Twitter: maccosmo
- LinkedIn: Devranuenal
رخصة
يتم إصدار OpenSwiftui تحت رخصة معهد ماساتشوستس للتكنولوجيا.