CodeShot

UIKit در مقابل SwiftUI

UIKit یک فریم‌ورک قدیمی و imperative برای ساخت UI در iOS است که رابط کاربری با کد دستوری یا Storyboard و مدیریت صریح چرخه‌حیات View ساخته می‌شود؛ SwiftUI یک فریم‌ورک اعلانی (declarative) جدیدتر است که UI را به‌صورت تابعی از state توصیف می‌کند و به‌صورت خودکار با تغییر state، رابط را به‌روزرسانی می‌کند.

ویژگیUIKitSwiftUI
سبک برنامه‌نویسیImperative (دستوری)Declarative (اعلانی)
به‌روزرسانی UI با تغییر stateدستیخودکار
حداقل نسخه پشتیبانی iOSاز نسخه‌های قدیمی‌ترiOS 13 به بعد
پیش‌نمایش زنده در Xcodeندارددارد (Live Preview)

کِی از UIKit استفاده کنیم؟

برای پروژه‌های قدیمی موجود، نیاز به کنترل بسیار دقیق و سطح‌پایین روی رفتار View یا پشتیبانی از نسخه‌های خیلی قدیمی iOS، از UIKit استفاده کنید.

کِی از SwiftUI استفاده کنیم؟

برای پروژه‌های جدید که می‌خواهند کد UI کمتر، خواناتر و declarative بنویسند و از پیش‌نمایش زنده Xcode بهره ببرند (و حداقل نسخه iOS 13+ کافی است)، از SwiftUI استفاده کنید.

مثال UIKit

let label = UILabel()
label.text = "Hello"
label.textAlignment = .center
view.addSubview(label)
// Manually manage layout constraints and updates

مثال SwiftUI

struct GreetingView: View {
    var body: some View {
        Text("Hello")
            .multilineTextAlignment(.center)
    }
}

اشتباه رایج

تلاش برای بازنویسی کامل و آنی یک اپلیکیشن بزرگ UIKit به SwiftUI بدون برنامه تدریجی، در حالی که راهکار عملی‌تر معمولاً ادغام تدریجی (با UIHostingController یا UIViewRepresentable) است، نه جایگزینی یک‌باره.

جمع‌بندی

پروژه جدید و ساده‌تر → SwiftUI؛ پروژه قدیمی یا نیاز به کنترل دقیق سطح‌پایین → UIKit (یا ترکیب تدریجی هر دو).