ViewModifier: یہ کیا ہے، SwiftUI میں View ترمیم کار

مصنف: IT Sectr اشاعت: 2026-06-24 مطالعے کا وقت: 6 منٹ

ViewModifier SwiftUI میں ایک پروٹوکل ہے جو View کی ظاہری اور رویہ کو بدلنے کے لیے دوبارہ استعمال قابل ترمیم کار بنانے کی اجازت دیتا ہے۔ Apple Developer Documentation, 2024 کے مطابق، ViewModifier کو body(content:) میتھڈ کے نفاذ کی ضرورت ہے، جو اصل View لے کر ایک ترمیم شدہ View واپس کرتا ہے، بلٹ-ان ترمیم کاروں کے کسی بھی امتزاج کو ایک واحد قسم میں سمویط کرتا ہے۔ اس پروٹوکل کے بغیر، ڈیولپرز کو استعمال کے ہر مقام پر ایک جیسی ترمیم کار زنجیروں کو دہرانا پڑتا۔

اہم نکات

  • ViewModifier — SwiftUI میں کسٹم View ترمیم کار بنانے کا پروٹوکل
  • body(content:) — واحد لازمی میتھڈ جو ترمیم شدہ View واپس کرتا ہے
  • بلٹ-ان ترمیم کار (font, padding) — View کے اکسٹینشن میتھڈ، ViewModifier نفاذ نہیں کرتے
  • کسٹم ترمیم کار دہرائے جانے والے انداز کے امتزاجات کو سمویط کرنے کی اجازت دیتے ہیں
  • ModifiedContent — View پر ViewModifier لاگو کرنے پر واپس کیا گیا قسم

SwiftUI میں ViewModifier کیا ہے؟

ViewModifier ایک SwiftUI پروٹوکل ہے جو ایسے ترمیم کار بنانے کے لیے ایک معاہدہ تعریف کرتا ہے جو کسی بھی View قسم پر لاگو کیے جا سکتے ہیں۔ اسے protocol ViewModifier { associatedtype Body: View; func body(content: Content) -> Body } کے طور پر اعلان کیا جاتا ہے، جہاں Content ترمیم کار کو دیے گئے اصل View کی قسم ہے۔

ViewModifier پروٹوکل SwiftUI کے پہلے ورزن کے ساتھ iOS 13 میں ظاہر ہوا اور iOS 18+ تک مستحکم ہے۔ بنیادی مقصد ڈیولپرز کو دہرائے جانے والے ترمیم کار زنجیروں کو ایک دوبارہ استعمال قابل قسم میں سمویط کرنے کا میکانزم فراہم کرنا ہے۔ ViewModifier کے بغیر، جب بھی آپ کو انداز کا ایک ہی سیٹ لاگو کرنا ہوتا، آپ کو تمام ترمیم کاروں کو دستی طور پر دہرانا پڑتا۔

Swift by Sundell (2023) کے مطابق، ViewModifier SwiftUI پروجیکٹوں میں انداز منتظم کرنے کا ترجیحی طریقہ ہے جب ترمیم کاروں کا ایک ہی سیٹ تین یا زیادہ مقامات پر استعمال ہوتا ہے۔ ایک بار کے امتزاجات کے لیے، براہ راست View پر بلٹ-ان ترمیم کاروں کی زنجیر کافی ہے۔

پروٹوکل کا سین ٹیکس

ViewModifier پروٹوکل کو ایک میتھڈ body(content:) کے نفاذ کی ضرورت ہے اور اختیاری طور پر کسٹم ترمیم کار کے ابتدائی پارامیٹرز کے ذریعے رویہ کو کسٹمائز کرنے کے لیے خواص فراہم کر سکتا ہے۔

ViewModifier پروٹوکل کیسے کام کرتا ہے

ViewModifier پروٹوکل body(content:) میتھڈ کی وضاحت کرتا ہے، جو اصل View (Content قسم) وصول کرتا ہے اور ایک ترمیم شدہ View (Body قسم) واپس کرتا ہے۔ SwiftUI ترمیم کار کو View پر content کے طور پر پاس کرکے لاگو کرتا ہے اور نتیجہ نمائش کے لیے استعمال کرتا ہے۔

swift
struct CardStyle: ViewModifier {
    func body(content: Content) -> some View {
        content
            .padding(16)
            .background(Color.white)
            .cornerRadius(12)
            .shadow(radius: 4, x: 0, y: 2)
    }
}

// استعمال:
Text("ہیلو، SwiftUI!")
    .modifier(CardStyle())

جب آپ .modifier(CardStyle()) کو کال کرتے ہیں، SwiftUI ModifiedContent<Text, CardStyle> کا ایک انسٹنس بناتا ہے جو اصل View اور ترمیم کار کو ذخیرہ کرتا ہے۔ رینڈرنگ کے دوران، SwiftUI CardStyle.body(content: text) کو کال کرتا ہے، padding، background، cornerRadius اور shadow کے ساتھ ایک ترمیم شدہ View حاصل کرتا ہے۔

اہم فرق: ViewModifier.body کو ہر دفعہ View اپ ڈیٹ ہوتی ہے کال کیا جاتا ہے، لھذا body کے اندر بھاری حساب یا مطرفہ اثرات نہیں ہونے چاہیئ۔ اگر ترمیم کار بیرونی ڈیٹا (state، environment) پر منحصر ہے، تو انہیں ابتدائی پارامیٹرز کے ذریعے گزاریں۔

بلٹ-ان بنام کسٹم ترمیم کار: فرق

SwiftUI کے بلٹ-ان ترمیم کار (font, foregroundColor, frame, padding) View پروٹوکل کے اکسٹینشن میتھڈ ہیں جو ModifiedContent قسم واپس کرتے ہیں۔ وے براہ راست ViewModifier نفاذ نہیں کرتے — SwiftUI ہر بلٹ-ان ترمیم کار کے لیے اندرونی بہترین نفاذ استعمال کرتا ہے۔

خاصیتبلٹ-ان ترمیم کارکسٹم ViewModifier
نفاذView اکسٹینشن میتھڈViewModifier پروٹوکل
دوبارہ استعمالایک بار کی زنجیرمتعدد استعمال
پارامیٹرزمقرر (رنگ، حجم)ابتدائی کے ذریعے کوئی بھی
کارکردگیزیادہ سے زیادہ (اندرونی بہترینکردگی)تھوڑا سے زیادہ اوورہیڈ
واپسی کی قسمModifiedContentModifiedContent

کسٹم ViewModifier اس وقت جائز ہے جب ترمیم کاروں کا ایک ہی امتزاج دو یا زیادہ مقامات پر استعمال ہوتا ہے۔ ایک بار کے استعمال کے لیے، براہ راست ترمیم کار زنجیر بہتر ہے — کوڈ پڑھنے قابل رہتا ہے اور کامپائلر بہتر بہترین کرتا ہے۔

WWDC 2023 کے مطابق، Apple ایپ کے ڈیزائن سیسٹم سے متعلق اندازوں کے لیے کسٹم ViewModifier بنانے کی سفارش کرتا ہے: کارڈ، بٹن، انپوٹ فیلڈز۔ یہ مسلسلی یقینی بناتا ہے اور ڈیزائن بدلنے پر دیکھ بھال کو آسان کرتا ہے۔

ViewModifier استعمال کے نمونے

نمونہ 1: ڈیزائن سیسٹم کی سمویطیںے ViewModifier کے سب سے عام استعمال کا مقصد ایک ایپ میں بصری اندازوں کے لیے سچائی کا ایک ذریعہ بنانا ہے۔ ہر ڈیزائن سیسٹم عنصر (کارڈ، بٹن، سرخی) اپنا خود کا ترمیم کار پاتا ہے۔

swift
struct PrimaryButton: ViewModifier {
    var isEnabled: Bool

    func body(content: Content) -> some View {
        content
            .font(.headline.weight(.semibold))
            .foregroundColor(.white)
            .padding(EdgeInsets(top: 12, leading: 24, bottom: 12, trailing: 24))
            .background(isEnabled ? Color.blue : Color.gray)
            .cornerRadius(8)
            .opacity(isEnabled ? 1.0 : 0.6)
    }
}

نمونہ 2: مشروط ترمیم کار لاگو۔ کبھی کبھی آپ کو صرف ایک مخصوص شرط کے تحت ترمیم کار لاگو کرنا ہوتا ہے۔ بولین پارامیٹر کے ساتھ ViewModifier اس لجیک کو body کے اندر سمویط کرنے کی اجازت دیتا ہے۔

نمونہ 3: ترمیم کار کا امتزاج۔ ایک ViewModifier اپنے body کے اندر دوسرے ViewModifier لاگو کر سکتا ہے۔ یہ ترمیم کاروں کا ایک درجہ بندی بنانے کی اجازت دیتا ہے، جہاں ہر ایک بصری پیش کردگی کے اپنے پہلو کا ذمہ دار ہے۔ مثال کے طور پر، CardStyle اندرونی طور پر ShadowStyle اور BorderStyle لاگو کر سکتا ہے۔

Point-Free (2024) کے مطابق، ViewModifier کے ذریعے ترمیم کاروں کا امتزاج وراثت پر ترجیح دیا جاتا ہے: ہر ترمیم کار ایک کام کا ذمہ دار ہے اور انہیں آزادانہ ملایا جا سکتا ہے۔ یہ SwiftUI میں واحد ذمہ داری کے اصول پر عمل کرتا ہے۔

کارکردگی اور ترمیم کار کا امتزاج

ViewModifier کی کارکردگی ہر استعمال کے ساتھ بنائے گئے ModifiedContent لپیٹوں کی تعداد پر منحصر ہے۔ SwiftUI رینڈرنگ کے مرحلہ پر دفنگ کے ذریعے ترمیم کار زنجیروں کو بہتر کرتا ہے، لیکن ترمیم کاروں کی ضرورت سے زیادہ تعداد اپ ڈیٹس کو سست کر سکتی ہے۔

ترمیم کاروں کی تعدادکارکردگی پر اثرسفارش
1–5کم سے کمکسی بھی View کے لیے معمولی
5–10متوسطViewModifier میں گروپ کریں
10–20قابل توجہایک کسٹم ترمیم کار میں ملا دیں
20+تنقیدیView کے تعمیر پر دبارہ غور کریں

بہترینکردگی: ایک ہی قسم کے متعدد مسلسل ترمیم کاروں (مثال کے طور پر، متعدد padding) کو ایک میں ملا دیں۔ PreferenceKey کو صرف اس وقت استعمال کریں جب واقعی ضرورت ہو — ترجیحات پڑھنے والے ترمیم کار ایک اضافی رینڈرنگ پیس کو متحرک کرتے ہیں۔

عام قاعدہ: اگر ایک View میں 10 سے زیادہ ترمیم کار ہیں — ان میں سے کچھ کو ایک کسٹم ViewModifier میں نکال دیں۔ یہ پڑھنے کی صلاحیت کو بہتر کرے گا اور SwiftUI کو اپ ڈیٹس کو بہتر کرنے کی اجازت دے گا۔ SwiftUI Lab (2024) کے مطابق، ترمیم کاروں کو ViewModifier میں گروپ کرنا پیچیدہ Views کے لیے رینڈرنگ کا وقت 15–30% کم کرتا ہے۔

اکثر پوچے جانے والے سوالات

SwiftUI میں ViewModifier کیا ہے؟

ViewModifier ایک پروٹوکل ہے جو View کی ظاہری یا رویہ کو بدلنے والے دوبارہ استعمال قابل ترمیم کار بنانے کے لیے ہے۔ اسے body(content:) میتھڈ کے نفاذ کی ضرورت ہے، جو اصل View لے کر ایک ترمیم شدہ View واپس کرتا ہے۔

ViewModifier بلٹ-ان ترمیم کاروں سے کیسے مختلف ہے؟

بلٹ-ان ترمیم کار (font, padding) View پروٹوکل کے اکسٹینشن میتھڈ ہیں جو اندرونی بہتر کردگی شدہ نفاذ استعمال کرتے ہیں۔ ViewModifier کسٹم ترمیم کاروں کے لیے ایک پروٹوکل ہے جو بلٹ-ان کے ایک امتزاج کو سمویط کرتا ہے اور اس میں ابتدائی پارامیٹرز ہو سکتے ہیں۔

مجھے کب کسٹم ViewModifier بنانا چاہیے؟

کسٹم ViewModifier بنائیں جب ترمیم کاروں کا ایک ہی امتزاج تین یا زیادہ مقامات پر استعمال ہوتا ہے۔ ایک بار کی زنجیروں کے لیے، View پر براہ راست ترمیم کار استعمال کریں — یہ سادہ اور زیادہ کارگر ہے۔

کیا ViewModifier میں State ہو سکتا ہے؟

ہاں، ViewModifier میں @State یا @Environment خواص ہو سکتی ہیں۔ SwiftUI ان کے لائف سائکل کو View کی طرح منتظم کرتا ہے۔ تاہم، یاد رکھیں کہ body ہر اپ ڈیٹ پر کال ہوتا ہے، لہذا ترمیم کار کے body میں بھاری کاروائی سے گریز کریں۔

ViewModifier کو مشروط طور پر کیسے لاگو کیا جائے؟

@ViewBuilder کے اندر if/else استعمال کریں یا ایک بولین پارامیٹر کے ساتھ ایک ترمیم کار بنائیں جو body کے اندر مشروط طور پر تبدیلیاں لاگو کرے یا چھوڑ دے۔ مثال کے طور پر، اوپر PrimaryButton مشروط انداز لاگو کے لیے isEnabled استعمال کرتا ہے۔

خلاصہ

  • ViewModifier — دوبارہ استعمال قابل View ترمیم کار بنانے کا SwiftUI پروٹوکل
  • body(content:) — میتھڈ جو اصل View لے کر ترمیم شدہ View واپس کرتا ہے
  • بلٹ-ان ترمیم کار — View اکسٹینشن میتھڈ، ViewModifier نفاذ نہیں کرتے
  • ModifiedContent — قسم جو اصل View اور لاگو کردہ ترمیم کار کو ذخیرہ کرتا ہے
  • کسٹم ترمیم کار جائز ہیں جب امتزاج 3+ مقامات پر دہرایا جائے
  • ViewModifier کے ذریعے ترمیم کاروں کا امتزاج وراثت پر ترجیح پزیر ہے
  • ترمیم کاروں کو ViewModifier میں گروپ کرنا کارکردگی میں 15–30% بہتری لاتا ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں