SwiftUI

From binaryoption
Jump to navigation Jump to search
Баннер1

SwiftUI: دليل شامل للمبتدئين

SwiftUI هو إطار عمل واجهة مستخدم حديث وقوي تم تقديمه بواسطة شركة Apple في عام 2019. يهدف إلى تبسيط عملية تطوير تطبيقات عبر منصات Apple، بما في ذلك iOS و macOS و watchOS و tvOS. بدلاً من استخدام UIKit (للـ iOS) أو AppKit (للـ macOS) التقليديين، يوفر SwiftUI طريقة تصريحية لإنشاء واجهات المستخدم، مما يجعل الكود أكثر قابلية للقراءة والصيانة. هذا المقال يوفر مقدمة شاملة لـ SwiftUI للمبتدئين، مع التركيز على المفاهيم الأساسية والأمثلة العملية.

1. لماذا SwiftUI؟

قبل الغوص في التفاصيل، من المهم فهم سبب اختيار SwiftUI على الأطر التقليدية. هناك العديد من المزايا:

  • تصريحية مقابل إجرائية: في UIKit، كنت بحاجة إلى تحديد *كيفية* يجب أن تظهر واجهة المستخدم. في SwiftUI، أنت تحدد *ماذا* تريد أن يظهر، ويقوم SwiftUI بمعالجة التفاصيل. وهذا يجعل الكود أكثر إيجازًا وأقل عرضة للأخطاء.
  • تحديثات في الوقت الحقيقي: SwiftUI يستخدم نظام "تفاعل" قويًا يسمح لواجهة المستخدم بالتحديث تلقائيًا عندما تتغير البيانات الأساسية. هذا يقلل من كمية الكود التي تحتاج إلى كتابتها لإدارة تحديثات واجهة المستخدم.
  • التوافق عبر الأنظمة الأساسية: يمكنك استخدام نفس الكود لإنشاء تطبيقات لكل من iOS و macOS و watchOS و tvOS، مما يوفر الوقت والجهد.
  • المعاينة المباشرة: يوفر Xcode معاينة مباشرة لواجهة المستخدم SwiftUI، مما يسمح لك برؤية التغييرات في الوقت الفعلي دون الحاجة إلى تشغيل التطبيق.
  • سهولة التعلم: بنية SwiftUI أبسط وأكثر سهولة من UIKit، مما يجعله خيارًا جيدًا للمطورين الجدد.

2. المفاهيم الأساسية في SwiftUI

لفهم SwiftUI، تحتاج إلى التعرف على بعض المفاهيم الأساسية:

  • Views (طرق العرض): Views هي اللبنات الأساسية لواجهة المستخدم في SwiftUI. كل شيء تراه على الشاشة هو View. يمكن أن تكون Views بسيطة مثل نص أو صورة، أو معقدة مثل قائمة أو نموذج.
  • Modifiers (المعدّلات): Modifiers هي وظائف تقوم بتعديل مظهر أو سلوك Views. على سبيل المثال، يمكنك استخدام المعدّل `.font()` لتغيير خط النص، أو المعدّل `.padding()` لإضافة مساحة حول View.
  • State (الحالة): State هي البيانات التي تحدد مظهر وسلوك View. عندما تتغير State، يتم تحديث View تلقائيًا. تستخدم `@State` لتحديد المتغيرات التي تمثل الحالة.
  • Binding (الربط): Binding هي طريقة لربط State بين Views المختلفة. عندما تتغير State في View واحد، يتم تحديث جميع Views الأخرى المرتبطة بها تلقائيًا. تستخدم `@Binding` لإنشاء الربط.
  • ObservableObject (الكائن القابل للملاحظة): ObservableObject هو كائن يوفر طريقة لإعلام Views بالتغييرات في بياناته. تستخدم `@ObservedObject` لمراقبة ObservableObject.
  • EnvironmentObject (كائن البيئة): EnvironmentObject هو طريقة لتمرير البيانات عبر شجرة View دون الحاجة إلى تمريرها يدويًا من View إلى View. تستخدم `@EnvironmentObject` للوصول إلى EnvironmentObject.

3. بناء أول تطبيق SwiftUI

لنبدأ ببناء تطبيق بسيط يعرض نصًا:

```swift import SwiftUI

struct ContentView: View {

   var body: some View {
       Text("مرحباً بالعالم!")
           .font(.largeTitle)
           .padding()
   }

}

struct ContentView_Previews: PreviewProvider {

   static var previews: some View {
       ContentView()
   }

} ```

في هذا المثال:

  • `ContentView` هي View الرئيسية.
  • `body` هي خاصية مطلوبة في كل View تحدد محتوى View.
  • `Text("مرحباً بالعالم!")` ينشئ View نصي يعرض النص "مرحباً بالعالم!".
  • `.font(.largeTitle)` هو معدّل يغير خط النص إلى حجم كبير.
  • `.padding()` هو معدّل يضيف مساحة حول النص.
  • `ContentView_Previews` هي بنية توفر معاينة لـ `ContentView` في Xcode.

4. التعامل مع الحالة (State)

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

```swift import SwiftUI

struct CounterView: View {

   @State private var count: Int = 0
   var body: some View {
       VStack {
           Text("العداد: \(count)")
               .font(.title)
           Button("زيادة") {
               count += 1
           }
       }
       .padding()
   }

}

struct CounterView_Previews: PreviewProvider {

   static var previews: some View {
       CounterView()
   }

} ```

في هذا المثال:

  • `@State private var count: Int = 0` يعلن عن متغير حالة يسمى `count` بقيمة أولية 0. كلمة `private` تعني أن هذا المتغير يمكن الوصول إليه فقط داخل `CounterView`.
  • `Text("العداد: \(count)")` يعرض قيمة `count` في View نصي.
  • `Button("زيادة") { count += 1 }` ينشئ زرًا يزيد قيمة `count` بمقدار 1 عند النقر عليه. عندما تتغير `count`، يتم تحديث View تلقائيًا.
  • `VStack` ترتب طرق العرض عمودياً.

5. الربط (Binding)

لنقم بإنشاء View آخر يعرض قيمة العداد ويسمح بإنقاصها:

```swift import SwiftUI

struct DecrementView: View {

   @Binding var count: Int
   var body: some View {
       Button("إنقاص") {
           count -= 1
       }
       .padding()
   }

}

struct DecrementView_Previews: PreviewProvider {

   @State private var previewCount: Int = 10
   static var previews: some View {
       DecrementView(count: $previewCount)
   }

} ```

في هذا المثال:

  • `@Binding var count: Int` يعلن عن متغير ربط يسمى `count`. هذا المتغير مرتبط بمتغير State في View آخر.
  • `Button("إنقاص") { count -= 1 }` ينشئ زرًا ينقص قيمة `count` بمقدار 1 عند النقر عليه. عندما تتغير `count`، يتم تحديث جميع Views المرتبطة بها تلقائيًا.
  • `$previewCount` في المعاينة ينشئ ربطًا لـ `previewCount`.

يمكننا الآن استخدام `CounterView` و `DecrementView` معًا:

```swift import SwiftUI

struct MainView: View {

   @State private var counter: Int = 0
   var body: some View {
       VStack {
           CounterView(count: $counter)
           DecrementView(count: $counter)
       }
   }

}

struct MainView_Previews: PreviewProvider {

   static var previews: some View {
       MainView()
   }

} ```

6. التخطيطات (Layouts)

SwiftUI يوفر العديد من التخطيطات لترتيب Views:

  • `VStack`: يرتب Views عموديًا.
  • `HStack`: يرتب Views أفقيًا.
  • `ZStack`: يضع Views فوق بعضها البعض.
  • `List`: يعرض قائمة من البيانات.
  • `Grid`: يعرض البيانات في شبكة.

7. استخدام الصور والألوان

يمكنك بسهولة إضافة صور وألوان إلى تطبيقات SwiftUI:

```swift import SwiftUI

struct ImageColorView: View {

   var body: some View {
       VStack {
           Image("example_image") // يجب أن تكون الصورة موجودة في Assets.xcassets
               .resizable()
               .frame(width: 100, height: 100)
           Text("لون مثال")
               .foregroundColor(.blue)
               .background(Color.yellow)
       }
   }

}

struct ImageColorView_Previews: PreviewProvider {

   static var previews: some View {
       ImageColorView()
   }

} ```

8. التعامل مع الأحداث (Events)

بالإضافة إلى النقر على الأزرار، يمكنك التعامل مع الأحداث الأخرى مثل تغيير النص في حقل نصي:

```swift import SwiftUI

struct TextFieldView: View {

   @State private var text: String = ""
   var body: some View {
       TextField("أدخل نصًا", text: $text)
           .padding()
       Text("النص المدخل: \(text)")
   }

}

struct TextFieldView_Previews: PreviewProvider {

   static var previews: some View {
       TextFieldView()
   }

} ```

9. SwiftUI و الخيارات الثنائية (Binary Options)

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

  • واجهة عرض الرسوم البيانية للأسعار (باستخدام مكتبات مثل Charts).
  • واجهة لإدخال أوامر الشراء والبيع.
  • واجهة لعرض معلومات الحساب.
  • واجهة لعرض إشعارات حول الصفقات المفتوحة.

10. الخطوات التالية

SwiftUI هو إطار عمل قوي ومتطور. لمواصلة التعلم، يمكنك:

  • استكشاف وثائق Apple الرسمية: [1](https://developer.apple.com/documentation/swiftui)
  • بناء مشاريع صغيرة لتطبيق ما تعلمته.
  • الاشتراك في الدورات التدريبية عبر الإنترنت.
  • قراءة المقالات والمدونات حول SwiftUI.
  • المشاركة في مجتمعات SwiftUI عبر الإنترنت.

SwiftUI يمثل مستقبل تطوير واجهة المستخدم على منصات Apple. من خلال التعلم والممارسة، يمكنك إتقان هذا الإطار القوي وإنشاء تطبيقات مذهلة.

Swift UIKit AppKit Xcode iOS Development macOS Development Swift Package Manager Combine Framework Core Data CloudKit

ابدأ التداول الآن

سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер