ViewModifier: यह क्या है, SwiftUI में View मॉडिफायर

लेखक: IT Sectr प्रकाशित: 2026-06-24 पढ़ने का समय: 6 मिनट

ViewModifier SwiftUI में एक प्रोटोकॉल है जो View के स्वरूप और व्यवहार को बदलने के लिए पुनः प्रयोज्य मॉडिफायर बनाने की अनुमति देता है। Apple Developer Documentation, 2024 के अनुसार, ViewModifier को body(content:) method को लागू करने की आवश्यकता होती है, जो मूल View लेता है और एक संशोधित View लौटाता है, बिल्ट-इन मॉडिफायर के किसी भी संयोजन को एक ही प्रकार में एनकैप्सुलेट करता है। इस प्रोटोकॉल के बिना, डेवलपर्स को उपयोग के हर बिंदु पर समान मॉडिफायर चेन को दोहराना पड़ता।

मुख्य बातें

  • ViewModifier — SwiftUI में कस्टम View मॉडिफायर बनाने के लिए प्रोटोकॉल
  • body(content:) — एकमात्र अनिवार्य method जो संशोधित View लौटाता है
  • बिल्ट-इन मॉडिफायर (font, padding) — View के एक्सटेंशन method, ViewModifier को लागू नहीं करते
  • कस्टम मॉडिफायर दोहराई जाने वाली स्टाइल संयोजनों को एनकैप्सुलेट करने की अनुमति देते हैं
  • ModifiedContent — वह प्रकार जो ViewModifier को View पर लागू करने पर लौटता है

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 प्रोटोकॉल को एक method body(content:) को लागू करने की आवश्यकता होती है और वैकल्पिक रूप से कस्टम मॉडिफायर के इनिशियलाइज़र पैरामीटर के माध्यम से व्यवहार को अनुकूलित करने के लिए गुण प्रदान कर सकता है।

ViewModifier प्रोटोकॉल कैसे काम करता है

ViewModifier प्रोटोकॉल body(content:) method को परिभाषित करता है, जो मूल 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 प्रोटोकॉल के एक्सटेंशन method हैं जो ModifiedContent प्रकार लौटाते हैं। वे सीधे ViewModifier को लागू नहीं करते — SwiftUI प्रत्येक बिल्ट-इन मॉडिफायर के लिए आंतरिक अनुकूलित कार्यान्वयन का उपयोग करता है।

विशेषताबिल्ट-इन मॉडिफायरकस्टम ViewModifier
कार्यान्वयनView एक्सटेंशन methodViewModifier प्रोटोकॉल
पुनः उपयोगएक बार की श्रृंखलाकई बार उपयोग
पैरामीटरनिश्चित (रंग, आकार)इनिशियलाइज़र के माध्यम से कोई भी
प्रदर्शनअधिकतम (आंतरिक अनुकूलन)थोड़ा अधिक ओवरहेड
वापसी प्रकार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:) method को लागू करने की आवश्यकता होती है, जो मूल View लेता है और एक संशोधित View लौटाता है।

ViewModifier बिल्ट-इन मॉडिफायर से कैसे अलग है?

बिल्ट-इन मॉडिफायर (font, padding) View प्रोटोकॉल के एक्सटेंशन method हैं जो आंतरिक अनुकूलित कार्यान्वयन का उपयोग करते हैं। 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:) — method जो मूल View लेता है और संशोधित View लौटाता है
  • बिल्ट-इन मॉडिफायर — View एक्सटेंशन method, ViewModifier लागू नहीं करते
  • ModifiedContent — वह प्रकार जो मूल View और लागू मॉडिफायर संग्रहीत करता है
  • कस्टम मॉडिफायर उचित हैं जब संयोजन 3+ स्थानों पर दोहराया जाता है
  • ViewModifier के माध्यम से मॉडिफायर का संयोजन विरासत से बेहतर है
  • ViewModifier में मॉडिफायर को समूहित करने से प्रदर्शन 15–30% सुधरता है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें