Swift में Hex रंग: #FF5733 का जादू कैसे काम करता है

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

#FF5733 सिर्फ एक रैंडम कोड नहीं है - जानिए क्यों?

\n\n

क्या आपने कभी सोचा है कि आपके कोड में #FF5733 लिखने के पीछे क्या छिपा है? ज़्यादातर डेवलपर्स इसे सिर्फ "कोई नारंगी-गुलाबी रंग" समझते हैं। लेकिन गहराई में जाएं तो इस छह अंकों के कोड के पीछे एक शानदार गणित, बिट ऑपरेशन और पुराने मॉनिटरों और HTML स्पेसिफिकेशन की कहानी छिपी है।

\n\n

इस लेख में हम Swift में hex रंगों को शुरू से समझेंगे। आप जानेंगे कि RGB चैनल कैसे काम करते हैं, hex फॉर्मेट इतना लोकप्रिय क्यों है, और सबसे महत्वपूर्ण बात - अपना खुद का UIColor (या SwiftUI के लिए Color) कैसे लिखें जो हेक्साडेसिमल स्ट्रिंग को स्वीकार करे। हाँ, हम असली कोड देखेंगे जिसे आप आज ही इस्तेमाल कर सकते हैं।

\n\n

अगर आपने कभी Stack Overflow पर "Swift में hex color values का उपयोग कैसे करें" का जवाब खोजा है - तो आप सही जगह पर आए हैं। बस अब हिंदी में और गहरी व्याख्या के साथ।

\n\n

Hex रंग की संरचना: ये अंक कहाँ से आते हैं?

\n\n

चलिए सबसे सरल चीज़ से शुरू करते हैं। स्क्रीन पर रंग तीन बुनियादी घटकों का संयोजन है: Red (लाल), Green (हरा) और Blue (नीला)। इनमें से प्रत्येक का मान 0 से 255 तक हो सकता है। 255 ही क्यों? क्योंकि यह एक बाइट (8 बिट) में लिखी जा सकने वाली अधिकतम संख्या है।

\n\n

Hex फॉर्मेट इन तीनों संख्याओं को लिखने का एक कॉम्पैक्ट तरीका है।

\n\n
    \n
  • #FF5733 तीन जोड़ियों में बंटता है: FF, 57, 33।
  • \n
  • FF दशमलव प्रणाली में = 255 (अधिकतम लाल)।
  • \n
  • 57 = 87 (हरा)।
  • \n
  • 33 = 51 (नीला)।
  • \n
  • अंतिम रंग: RGB(255, 87, 51) - एक चमकीला कोरल रंग।
  • \n
\n\n

हेक्साडेसिमल प्रणाली (आधार 16) 0 से 9 तक के अंकों और A से F तक के अक्षरों का उपयोग करती है। यह 0 से 255 तक की संख्या को सिर्फ दो प्रतीकों में लिखने की अनुमति देती है। सुविधाजनक है, है ना?

\n\n

वेब और iOS में hex इतना लोकप्रिय क्यों है?

\n\n

ऐतिहासिक रूप से, hex कोड वेब डिज़ाइन से आए हैं। जब CSS विकसित हो रहा था, #RRGGBB रंगों को निर्दिष्ट करने का मानक बन गया। Swift और UIKit ने इस परंपरा को अपनाया, लेकिन एक अंतर के साथ: UIColor में hex स्ट्रिंग का कोई बिल्ट-इन पार्सर नहीं है।

\n\n

हर iOS डेवलपर ने कम से कम एक बार UIColor के लिए एक extension लिखा है जो "#FF5733" को UIColor में बदलता है। यह एक तरह का "दीक्षा अनुष्ठान" बन गया है। और आज हम इस अनुष्ठान को एक साथ करेंगे।

\n\n

Swift में अपना खुद का hex पार्सर लिखें (चरण दर चरण)

\n\n

आइए UIColor के लिए एक सुविधाजनक और सुरक्षित इनिशियलाइज़र बनाएं जो hex स्ट्रिंग को स्वीकार करे। हम हर कदम को समझेंगे।

\n\n

चरण 1: बुनियादी संरचना

\n\n
import UIKit\n\nextension UIColor {\n    convenience init?(hex: String) {\n        // यहाँ जादू होगा\n    }\n}\n
\n\n

हम convenience init? (फेल करने वाला) का उपयोग कर रहे हैं क्योंकि स्ट्रिंग अमान्य हो सकती है।

\n\n

चरण 2: स्ट्रिंग को साफ करें

\n\n

उपयोगकर्ता "#FF5733", "FF5733" या "0xFF5733" भी भेज सकते हैं। हमें सभी अनावश्यक चीज़ों को हटाना होगा।

\n\n
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\n
guard hexString.count == 6 || hexString.count == 8 else {\n    return nil\n}\n
\n\n

चरण 4: स्ट्रिंग को संख्याओं में पार्स करें

\n\n

अब सबसे दिलचस्प हिस्सा। हमें स्ट्रिंग को हेक्साडेसिमल संख्या में बदलना होगा, और फिर उसमें से RGB घटकों को निकालना होगा।

\n\n
guard let hexValue = UInt64(hexString, radix: 16) else {\n    return nil\n}\n

ब्लॉग

पुस्तक अनुशंसाएँ