تقسيمة الفايلات
آخر تحديث: منذ 0 ثانية
· 11 مشاهدة
xcodeproj
بعدين بيكون في فولدر باسم البروجيكت فيه بعض الفايلات فايل فيه اسم البروجيكت + كلمة app بيكون فيه
swift
import SwiftUI
@main
struct firstswiftuiApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
دي ال entry point
نعم! ✅ صح تماماً
هيكل المشروع:
code
firstswiftui.xcodeproj ← ملف المشروع الرئيسي
📂 firstswiftui/
├── firstswiftuiApp.swift ← Entry Point 🚀
├── ContentView.swift ← الشاشة الرئيسية
└── Assets
شرح الـ Entry Point:
@main
- بيقول لـ Swift "ابدأ من هنا"
- في المشروع كله مفيش غيره
struct firstswiftuiApp: App
- الـ struct الرئيسي للتطبيق
- بيورث من
Appمش منView
var body: some Scene
- مش
Viewهنا، دهScene - لأن التطبيق كله هو Scene، والشاشات هي Views
الفرق بين App, Scene, و View 🎯
تخيل الموضوع زي مسرح 🎭
code
🏛️ App = المسرح كله
🎬 Scene = الخشبة (منطقة العرض)
🎭 View = الممثلين والديكور
بالتفصيل:
🏛️ App
- التطبيق بالكامل
- بيشتغل من أول ما تفتح للتطبيق لحد ما تقفله
🎬 Scene
- النافذة اللي بيظهر فيها المحتوى
- على iPhone = نافذة واحدة بس
- على iPad/Mac = ممكن تفتح أكتر من نافذة في نفس الوقت
code
iPad مثلاً:
┌──────────┐ ┌──────────┐
│ Scene 1 │ │ Scene 2 │
│ (نافذة) │ │ (نافذة) │
└──────────┘ └──────────┘
🎭 View
- المحتوى داخل النافذة
- الأزرار، النصوص، الصور...
- بتتغير وبتتبدل جوه الـ Scene
عملياً في الكود:
swift
// App = المسرح كله
struct firstswiftuiApp: App {
// Scene = الخشبة (النافذة)
var body: some Scene {
WindowGroup {
// View = الممثلين (المحتوى)
ContentView()
}
}
}
ببساطة شديدة:
code
App 🏛️ = التطبيق
Scene 🎬 = النافذة
View 🎭 = المحتوى جوه النافذة
الـ Scene هي الوسيط بين التطبيق والشاشات 🎯
WindowGroup
- بيقول "افتح نافذة"
- على iPhone = شاشة واحدة
- على iPad/Mac = ممكن نوافذ متعددة
ContentView()
- ده اللي بيقول "أول شاشة تظهر هي ContentView"
- لو عايز تغير الشاشة الأولى، بتغيرها هنا
ببساطة رحلة التطبيق:
code
@main
↓
firstswiftuiApp ← "ابدأ هنا"
↓
WindowGroup ← "افتح نافذة"
↓
ContentView() ← "أول شاشة"
ده أول كود بيشتغل في أي تطبيق SwiftUI 🎯
swift
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
#Preview {
ContentView()
}
شرح الكود بالتفصيل 🎯
1️⃣ import SwiftUI
swift
import SwiftUI
استيراد مكتبة Apple لبناء الواجهات، لازم تكون في أول كل ملف.
2️⃣ struct ContentView: View
swift
struct ContentView: View {
- struct = تعريف نوع جديد
- ContentView = اسم الشاشة
- : View = هذا الـ struct هو شاشة قابلة للعرض
3️⃣ var body: some View
swift
var body: some View {
- var = متغير
- body = المحتوى البصري للشاشة
- some View = بيرجع View ما مش محدد النوع
4️⃣ VStack
swift
VStack {
يرتب العناصر عمودياً فوق بعض ⬇️
code
┌─────────┐
│ 🌐 │ ← Image
│Hello! │ ← Text
└─────────┘
5️⃣ الـ Image
swift
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
| السطر | المعنى |
|---|---|
Image(systemName:) |
أيقونة من مكتبة Apple |
.imageScale(.large) |
حجم كبير |
.foregroundStyle(.tint) |
لون أزرق تلقائي |
6️⃣ الـ Text
swift
Text("Hello, world!")
عرض نص على الشاشة.
7️⃣ الـ .padding()
swift
.padding()
مسافة حول الـ VStack من كل الجهات.
8️⃣ الـ #Preview
swift
#Preview {
ContentView()
}
معاينة حية داخل Xcode فقط، مش بيظهر للمستخدم.
الصورة الكاملة:
code
import → استيراد المكتبة
struct → تعريف الشاشة
body → محتوى الشاشة
VStack → ترتيب عمودي
Image + Text → العناصر
padding → مسافات
#Preview → معاينة Xcode
VStack اختصار لـ 📐
Vertical Stack
| الكلمة | المعنى |
|---|---|
| V | Vertical = عمودي |
| Stack | تكديس = عناصر فوق بعض |
وفيه كمان:
| الاسم | الاختصار | الاتجاه |
|---|---|---|
| VStack | Vertical Stack | ⬇️ عمودي |
| HStack | Horizontal Stack | ➡️ أفقي |
| ZStack | Z-axis Stack | 📚 فوق بعض (طبقات) |
مثال بسيط:
swift
// VStack ⬇️
VStack {
Text("فوق")
Text("تحت")
}
// HStack ➡️
HStack {
Text("يسار")
Text("يمين")
}
// ZStack 📚
ZStack {
Text("الخلفية")
Text("قدام") // فوق الأول
}
ببساطة: V = Vertical = عمودي 🎯