#FF5733 सिर्फ एक रैंडम कोड नहीं है - जानिए क्यों?
\n\nक्या आपने कभी सोचा है कि आपके कोड में #FF5733 लिखने के पीछे क्या छिपा है? ज़्यादातर डेवलपर्स इसे सिर्फ "कोई नारंगी-गुलाबी रंग" समझते हैं। लेकिन गहराई में जाएं तो इस छह अंकों के कोड के पीछे एक शानदार गणित, बिट ऑपरेशन और पुराने मॉनिटरों और HTML स्पेसिफिकेशन की कहानी छिपी है।
इस लेख में हम Swift में hex रंगों को शुरू से समझेंगे। आप जानेंगे कि RGB चैनल कैसे काम करते हैं, hex फॉर्मेट इतना लोकप्रिय क्यों है, और सबसे महत्वपूर्ण बात - अपना खुद का UIColor (या SwiftUI के लिए Color) कैसे लिखें जो हेक्साडेसिमल स्ट्रिंग को स्वीकार करे। हाँ, हम असली कोड देखेंगे जिसे आप आज ही इस्तेमाल कर सकते हैं।
अगर आपने कभी Stack Overflow पर "Swift में hex color values का उपयोग कैसे करें" का जवाब खोजा है - तो आप सही जगह पर आए हैं। बस अब हिंदी में और गहरी व्याख्या के साथ।
\n\nHex रंग की संरचना: ये अंक कहाँ से आते हैं?
\n\nचलिए सबसे सरल चीज़ से शुरू करते हैं। स्क्रीन पर रंग तीन बुनियादी घटकों का संयोजन है: Red (लाल), Green (हरा) और Blue (नीला)। इनमें से प्रत्येक का मान 0 से 255 तक हो सकता है। 255 ही क्यों? क्योंकि यह एक बाइट (8 बिट) में लिखी जा सकने वाली अधिकतम संख्या है।
\n\nHex फॉर्मेट इन तीनों संख्याओं को लिखने का एक कॉम्पैक्ट तरीका है।
\n\n- \n
#FF5733तीन जोड़ियों में बंटता है:FF,57,33। \n FFदशमलव प्रणाली में = 255 (अधिकतम लाल)। \n 57= 87 (हरा)। \n 33= 51 (नीला)। \n - अंतिम रंग: RGB(255, 87, 51) - एक चमकीला कोरल रंग। \n
हेक्साडेसिमल प्रणाली (आधार 16) 0 से 9 तक के अंकों और A से F तक के अक्षरों का उपयोग करती है। यह 0 से 255 तक की संख्या को सिर्फ दो प्रतीकों में लिखने की अनुमति देती है। सुविधाजनक है, है ना?
\n\nवेब और iOS में hex इतना लोकप्रिय क्यों है?
\n\nऐतिहासिक रूप से, hex कोड वेब डिज़ाइन से आए हैं। जब CSS विकसित हो रहा था, #RRGGBB रंगों को निर्दिष्ट करने का मानक बन गया। Swift और UIKit ने इस परंपरा को अपनाया, लेकिन एक अंतर के साथ: UIColor में hex स्ट्रिंग का कोई बिल्ट-इन पार्सर नहीं है।
हर iOS डेवलपर ने कम से कम एक बार UIColor के लिए एक extension लिखा है जो "#FF5733" को UIColor में बदलता है। यह एक तरह का "दीक्षा अनुष्ठान" बन गया है। और आज हम इस अनुष्ठान को एक साथ करेंगे।
Swift में अपना खुद का hex पार्सर लिखें (चरण दर चरण)
\n\nआइए UIColor के लिए एक सुविधाजनक और सुरक्षित इनिशियलाइज़र बनाएं जो hex स्ट्रिंग को स्वीकार करे। हम हर कदम को समझेंगे।
\n\nचरण 1: बुनियादी संरचना
\n\nimport UIKit\n\nextension UIColor {\n convenience init?(hex: String) {\n // यहाँ जादू होगा\n }\n}\n\n\nहम convenience init? (फेल करने वाला) का उपयोग कर रहे हैं क्योंकि स्ट्रिंग अमान्य हो सकती है।
चरण 2: स्ट्रिंग को साफ करें
\n\nउपयोगकर्ता "#FF5733", "FF5733" या "0xFF5733" भी भेज सकते हैं। हमें सभी अनावश्यक चीज़ों को हटाना होगा।
var hexString = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()\n\nif hexString.hasPrefix("#") {\n hexString.removeFirst()\n}\n\nif hexString.hasPrefix("0X") {\n hexString.removeFirst(2)\n}\n\n\nचरण 3: लंबाई की जाँच करें
\n\nमानक hex कोड 6 अक्षरों का होता है (RRGGBB)। लेकिन 8 अक्षरों का फॉर्मेट भी है (RRGGBBAA), जहाँ AA अल्फा चैनल (पारदर्शिता) है। हम दोनों को सपोर्ट करेंगे।
\n\nguard hexString.count == 6 || hexString.count == 8 else {\n return nil\n}\n\n\nचरण 4: स्ट्रिंग को संख्याओं में पार्स करें
\n\nअब सबसे दिलचस्प हिस्सा। हमें स्ट्रिंग को हेक्साडेसिमल संख्या में बदलना होगा, और फिर उसमें से RGB घटकों को निकालना होगा।
\n\nguard let hexValue = UInt64(hexString, radix: 16) else {\n return nil\n}\n