दिलचस्प पोस्ट
हैशसेट, वेक्टर, लिंक्डलिस्ट के अधिकतम आकार PHP में 404 के लिए URL का परीक्षण करने का आसान तरीका है? ईगिट और गीथहब के साथ "ऑथ विफल" त्रुटि Java String.equals बनाम == नाम और संस्करण जोड़ी के साथ स्थापित जेनकिंस प्लग इन की सूची कैसे प्राप्त करें? सैश प्रतिस्थापन के साथ बाश चर जावास्क्रिप्ट / jQuery के साथ स्टाइलशीट (एक <link>) को निकालकर या बदलना $ .param () JavaScript / jQuery में व्युत्क्रम फ़ंक्शन मावेन: जार को कैसे शामिल करें, जो एक जे 2ईई प्रोजेक्ट में प्रतिनिधि में उपलब्ध नहीं हैं? मेवेन में विभिन्न बिल्ड प्रोफाइल के लिए विभिन्न निर्भरताएं गैर अवरुद्ध subprocess.call त्रुटि: Google मैप्स एपीआई त्रुटि: मिसिंगकेमेमैपरएर्रर जब कोई दृश्य छुपा हुआ हो तो अन्य दृश्यों को स्थानांतरित करने के लिए ऑटो-लेआउट का उपयोग कैसे करें? एचटीएमएल 5 में इसका क्या मतलब है जब कोई विशेषता बुलियन विशेषता है? UIAlertController की बर्खास्तगी को रोकें

स्विफ्ट का उपयोग करते हुए मैं एक स्ट्रिंग कैसे बना सकता हूं?

मैं एक साधारण कॉफी कैलक्यूलेटर बनाने की कोशिश कर रहा हूं। मुझे ग्राम में कॉफी की मात्रा को प्रदर्शित करने की आवश्यकता है I ग्राम के लिए "जी" प्रतीक मेरे यूआईएलबल से जुड़ा होना जरूरी है कि मैं राशि प्रदर्शित करने के लिए उपयोग कर रहा हूं। यूआईएलएबल में संख्याएं उपयोगकर्ता इनपुट के साथ गतिशील रूप से बदल रही हैं, लेकिन ठीक है, लेकिन मुझे स्ट्रिंग के अंत में एक कम केस "जी" जोड़ना होगा जो अद्यतन संख्याओं से अलग स्वरूपित है। संख्याओं के साथ "जी" को संलग्न करने की आवश्यकता है ताकि संख्या के आकार और स्थिति में परिवर्तन हो, संख्याओं के साथ "जी" "चाल" मुझे यकीन है कि इससे पहले इस समस्या का हल हो गया है ताकि सही दिशा में एक लिंक उपयोगी हो सके, क्योंकि मैं अपने छोटे से दिल को बाहर कर रहा हूं।

मैंने एक श्रेय के लिए प्रलेखन के माध्यम से खोज की है और मैं ऐप स्टोर से "एट्रिब्यूटेड स्ट्रिंग क्रिएटर" को डाउनलोड कर दिया है, लेकिन परिणामी कोड उद्देश्य-सी में है और मैं स्विफ्ट का उपयोग कर रहा हूं। इस भाषा को सीखने वाले अन्य डेवलपर्स के लिए क्या भयानक और शायद उपयोगी होगा, स्विफ्ट में एक स्ट्रिंग का उपयोग करके कस्टम विशेषताओं के साथ एक कस्टम फ़ॉन्ट बनाने का एक स्पष्ट उदाहरण है इसके लिए दस्तावेज बहुत ही भ्रामक है क्योंकि ऐसा करने के तरीके पर कोई बहुत स्पष्ट रास्ता नहीं है। मेरी योजना को श्रेय देने वाली स्ट्रिंग बनाना है और इसे मेरे कॉफ़ी अलार्म स्ट्रिंग के अंत में जोड़ना है।

var coffeeAmount: String = calculatedCoffee + attributedText 

जहां गणना की गई है कॉफी एक अंतर एक स्ट्रिंग में परिवर्तित होता है और "attributedText" कस्टम फ़ॉन्ट के साथ लोअरकेस "g" है जिसे मैं बनाने का प्रयास कर रहा हूं। शायद मैं इस बारे में गलत तरीके से जा रहा हूँ किसी भी मदद की सराहना की है!

वेब के समाधान से एकत्रित समाधान "स्विफ्ट का उपयोग करते हुए मैं एक स्ट्रिंग कैसे बना सकता हूं?"

यहां छवि विवरण दर्ज करें

यह उत्तर स्विफ्ट 4.0 के लिए अपडेट किया गया है।

त्वरित संदर्भ

एक स्ट्रिंग को बनाने और सेट करने का सामान्य रूप इस तरह है: आप नीचे अन्य सामान्य विकल्प पा सकते हैं।

 // create attributed string let myString = "Swift Attributed String" let myAttribute = [ NSAttributedStringKey.foregroundColor: UIColor.blue ] let myAttrString = NSAttributedString(string: myString, attributes: myAttribute) // set attributed text on a UILabel myLabel.attributedText = myAttrString 

लिखावट का रंग

 let myAttribute = [ NSAttributedStringKey.foregroundColor: UIColor.blue ] 

पीछे का रंग

 let myAttribute = [ NSAttributedStringKey.backgroundColor: UIColor.yellow ] 

फ़ॉन्ट

 let myAttribute = [ NSAttributedStringKey.font: UIFont(name: "Chalkduster", size: 18.0)! ] 

यहां छवि विवरण दर्ज करें

 let myAttribute = [ NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleSingle.rawValue ] 

यहां छवि विवरण दर्ज करें

 let myShadow = NSShadow() myShadow.shadowBlurRadius = 3 myShadow.shadowOffset = CGSize(width: 3, height: 3) myShadow.shadowColor = UIColor.gray let myAttribute = [ NSAttributedStringKey.shadow: myShadow ] 

इस पोस्ट के बाकी लोग रुचि रखने वालों के लिए और अधिक जानकारी देते हैं।


गुण

स्ट्रिंग विशेषताएँ [NSAttributedStringKey: Any] के रूप में सिर्फ एक शब्दकोश हैं, जहां NSAttributedStringKey विशेषता का प्रमुख नाम है और Any कुछ प्रकार का मान है मान फ़ॉन्ट, रंग, एक पूर्णांक, या कुछ और हो सकता है स्विफ्ट में कई मानक विशेषताएं हैं जो पहले से ही पूर्वनिर्धारित हैं। उदाहरण के लिए:

  • कुंजी नाम: NSAttributedStringKey.font , मूल्य: एक NSAttributedStringKey.font
  • कुंजी नाम: NSAttributedStringKey.foregroundColor , मान: एक UIColor
  • कुंजी नाम: NSAttributedStringKey.link , मान: एक NSURL या String

कई अन्य हैं अधिक के लिए इस लिंक देखें। आप अपनी खुद की कस्टम विशेषताओं को भी बना सकते हैं जैसे:

  • कुंजी नाम: NSAttributedStringKey.myName , मूल्य: कुछ प्रकार
    यदि आप एक एक्सटेंशन बनाते हैं:

     extension NSAttributedStringKey { static let myName = NSAttributedStringKey(rawValue: "myCustomAttributeKey") } 

स्विफ्ट में विशेषताओं का निर्माण करना

आप किसी भी अन्य शब्दकोश की घोषणा की तरह विशेषताएँ घोषित कर सकते हैं

 // single attributes declared one at a time let singleAttribute1 = [ NSAttributedStringKey.foregroundColor: UIColor.green ] let singleAttribute2 = [ NSAttributedStringKey.backgroundColor: UIColor.yellow ] let singleAttribute3 = [ NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleDouble.rawValue ] // multiple attributes declared at once let multipleAttributes: [NSAttributedStringKey : Any] = [ NSAttributedStringKey.foregroundColor: UIColor.green, NSAttributedStringKey.backgroundColor: UIColor.yellow, NSAttributedStringKey.underlineStyle: NSUnderlineStyle.styleDouble.rawValue ] // custom attribute let customAttribute = [ NSAttributedStringKey.myName: "Some value" ] 

rawValue स्टाइल वैल्यू के लिए आवश्यक rawValue नोट करें

क्योंकि विशेषताएँ केवल शब्दकोश हैं, आप उन्हें एक खाली शब्दकोश बनाकर और फिर इसके लिए कुंजी-मान जोड़े जोड़कर भी बना सकते हैं। यदि मान में एकाधिक प्रकार होंगे, तो आपको Any प्रकार के रूप में उपयोग करना होगा। ऊपर से, इस फैशन में पुन: निर्मित multipleAttributes उदाहरण यहां दिए गए हैं:

 var multipleAttributes = [NSAttributedStringKey : Any]() multipleAttributes[NSAttributedStringKey.foregroundColor] = UIColor.green multipleAttributes[NSAttributedStringKey.backgroundColor] = UIColor.yellow multipleAttributes[NSAttributedStringKey.underlineStyle] = NSUnderlineStyle.styleDouble.rawValue 

जिम्मेदार स्ट्रिंग्स

अब जब आप विशेषताओं को समझते हैं, तो आप जिम्मेदार स्ट्रिंग्स बना सकते हैं।

प्रारंभ

जिम्मेदार स्ट्रिंग बनाने के लिए कुछ तरीके हैं। यदि आपको केवल पढ़ने-योग्य स्ट्रिंग की आवश्यकता है तो आप NSAttributedString उपयोग कर सकते हैं। इसे शुरू करने के कुछ तरीके यहां दिए गए हैं:

 // Initialize with a string only let attrString1 = NSAttributedString(string: "Hello.") // Initialize with a string and inline attribute(s) let attrString2 = NSAttributedString(string: "Hello.", attributes: [NSAttributedStringKey.myName: "A value"]) // Initialize with a string and separately declared attribute(s) let myAttributes1 = [ NSAttributedStringKey.foregroundColor: UIColor.green ] let attrString3 = NSAttributedString(string: "Hello.", attributes: myAttributes1) 

यदि आपको विशेषताओं या स्ट्रिंग सामग्री को बाद में बदलना होगा, तो आपको NSMutableAttributedString उपयोग करना चाहिए। घोषणाएं बहुत समान हैं:

 // Create a blank attributed string let mutableAttrString1 = NSMutableAttributedString() // Initialize with a string only let mutableAttrString2 = NSMutableAttributedString(string: "Hello.") // Initialize with a string and inline attribute(s) let mutableAttrString3 = NSMutableAttributedString(string: "Hello.", attributes: [NSAttributedStringKey.myName: "A value"]) // Initialize with a string and separately declared attribute(s) let myAttributes2 = [ NSAttributedStringKey.foregroundColor: UIColor.green ] let mutableAttrString4 = NSMutableAttributedString(string: "Hello.", attributes: myAttributes2) 

एट्रेटेड स्ट्रिंग बदलना

एक उदाहरण के रूप में, इस पोस्ट के शीर्ष पर विशेषता स्ट्रिंग बनाते हैं।

पहले एक नया फ़ॉन्ट विशेषता के साथ एक NSMutableAttributedString बनाएँ

 let myAttribute = [ NSAttributedStringKey.font: UIFont(name: "Chalkduster", size: 18.0)! ] let myString = NSMutableAttributedString(string: "Swift", attributes: myAttribute ) 

यदि आप साथ काम कर रहे हैं, तो इस तरह UILabel (या UILabel ) को जिम्मेदार स्ट्रिंग सेट करें:

 textView.attributedText = myString 

आप textView.text उपयोग नहीं करते हैं

यहां परिणाम है:

यहां छवि विवरण दर्ज करें

फिर किसी अन्य विशेषता स्ट्रिंग को संलग्न करें जिसमें कोई भी विशेषता सेट नहीं है। (ध्यान दें कि भले ही मैंने उपरोक्त myString घोषित करने के लिए इस्तेमाल किया, मैं अभी भी इसे संशोधित कर सकता हूं क्योंकि यह एक NSMutableAttributedString । यह मेरी तरफ से अनवरत लगता है और मुझे आश्चर्य नहीं होगा अगर यह भविष्य में बदलता है। मुझे एक टिप्पणी दें हो जाता।)

 let attrString = NSAttributedString(string: " Attributed Strings") myString.append(attrString) 

यहां छवि विवरण दर्ज करें

अगला हम सिर्फ "स्ट्रिंग्स" शब्द का चयन करेंगे, जो सूचकांक 17 से शुरू होता है और इसकी लंबाई 7 ध्यान दें कि यह एक NSRange और स्विफ्ट Range नहीं है (श्रेणी के बारे में अधिक जानकारी के लिए यह जवाब देखें।) addAttribute विधि हमें पहली जगह में विशेषता कुंजी नाम addAttribute है, दूसरे स्थान का विशेषता मान और तीसरे स्थान पर रेंज।

 var myRange = NSRange(location: 17, length: 7) // range starting at location 17 with a lenth of 7: "Strings" myString.addAttribute(NSAttributedStringKey.foregroundColor, value: UIColor.red, range: myRange) 

यहां छवि विवरण दर्ज करें

अंत में, एक पृष्ठभूमि का रंग जोड़ें। विविधता के लिए, addAttributes विधि (नोट्स) का उपयोग करते हैं। मैं इस विधि के साथ एक साथ कई विशेषताओं को जोड़ सकता हूं, लेकिन मैं सिर्फ एक बार फिर जोड़ूंगा।

 myRange = NSRange(location: 3, length: 17) let anotherAttribute = [ NSAttributedStringKey.backgroundColor: UIColor.yellow ] myString.addAttributes(anotherAttribute, range: myRange) 

यहां छवि विवरण दर्ज करें

ध्यान दें कि गुण कुछ स्थानों पर अतिव्यापी हैं। एक विशेषता को जोड़ना उस विशेषता को अधिलेखित नहीं करता है जो पहले से मौजूद है।

सम्बंधित

  • NSMutableAttributedString के पाठ को कैसे बदलना है, लेकिन विशेषताएँ रखें

आगे की पढाई

  • एक नल स्थान से विशेषताओं को कैसे प्राप्त करें
  • जिम्मेदार स्ट्रिंग प्रोग्रामिंग गाइड (बहुत जानकारीपूर्ण लेकिन दुर्भाग्य से केवल उद्देश्य-सी में)

स्विफ्ट वही NSMutableAttributedString का उपयोग करता है जो ओबजे-सी करता है आप इसे स्ट्रिंग के रूप में गणना किए गए मान में गुजरने से इन्स्तांत करते हैं:

 var attributedString = NSMutableAttributedString(string:"\(calculatedCoffee)") 

अब गुणित g स्ट्रिंग (हेह) बनाएँ। नोट: UIFont.systemFontOfSize(_) अब एक फ़्यूज़ला प्रारंभकर्ता है, इसलिए इसे उपयोग करने से पहले इसे खोलना आवश्यक है:

 var attrs = [NSFontAttributeName : UIFont.systemFontOfSize(19.0)!] var gString = NSMutableAttributedString(string:"g", attributes:attrs) 

और फिर इसे जोड़ें:

 attributedString.appendAttributedString(gString) 

तब आप इस तरह NSAttributedString प्रदर्शित करने के लिए UILabel सेट कर सकते हैं:

 myLabel.attributedText = attributedString 

स्विफ्ट: एक्सकोड 6.1

  let font:UIFont? = UIFont(name: "Arial", size: 12.0) let attrString = NSAttributedString( string: titleData, attributes: NSDictionary( object: font!, forKey: NSFontAttributeName)) 

बीटा 6 में अच्छा काम करता है

 let attrString = NSAttributedString( string: "title-title-title", attributes: NSDictionary( object: NSFont(name: "Arial", size: 12.0), forKey: NSFontAttributeName)) 

मैंने इसे XCode 6 में किया था:

 let attriString = NSAttributedString(string:"attriString", attributes: [NSForegroundColorAttributeName: UIColor.lightGrayColor(), NSFontAttributeName: AttriFont]) 

मैं श्रेय को श्रेय देने के लिए एक पुस्तकालय का उपयोग करने की सिफारिश करेगा उदाहरण के लिए, यह आपको बहुत आसान बनाता है, उदाहरण के लिए, चार अलग-अलग रंगों और चार अलग-अलग फोंट के साथ एक स्ट्रिंग। यहाँ मेरा पसंदीदा है इसे SwiftyAttributes कहा जाता है

यदि आप स्फ़ाईएटिवेट्स का उपयोग करते हुए चार अलग-अलग रंगों और विभिन्न फ़ॉन्ट्स के साथ एक स्ट्रिंग बनाना चाहते हैं:

 let magenta = "Hello ".withAttributes([ .textColor(.magenta), .font(.systemFont(ofSize: 15.0)) ]) let cyan = "Sir ".withAttributes([ .textColor(.cyan), .font(.boldSystemFont(ofSize: 15.0)) ]) let green = "Lancelot".withAttributes([ .textColor(.green), .font(.italicSystemFont(ofSize: 15.0)) ]) let blue = "!".withAttributes([ .textColor(.blue), .font(.preferredFont(forTextStyle: UIFontTextStyle.headline)) ]) let finalString = magenta + cyan + green + blue 

finalString रूप में दिखाया जाएगा

छवि के रूप में दिखाता है

स्विफ्ट 4:

 let attributes = [NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 17)!, NSAttributedStringKey.foregroundColor: UIColor.white] 

स्विफ्ट 2.0

यहां एक नमूना है:

 let newsString: NSMutableAttributedString = NSMutableAttributedString(string: "Tap here to read the latest Football News.") newsString.addAttributes([NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleDouble.rawValue], range: NSMakeRange(4, 4)) sampleLabel.attributedText = newsString.copy() as? NSAttributedString 

या

 let stringAttributes = [ NSFontAttributeName : UIFont(name: "Helvetica Neue", size: 17.0)!, NSUnderlineStyleAttributeName : 1, NSForegroundColorAttributeName : UIColor.orangeColor(), NSTextEffectAttributeName : NSTextEffectLetterpressStyle, NSStrokeWidthAttributeName : 2.0] let atrributedString = NSAttributedString(string: "Sample String: Attributed", attributes: stringAttributes) sampleLabel.attributedText = atrributedString 

किसी विशेष रंग या संपत्ति को सेट करने पर समाधान के ऊपर मेरे लिए काम नहीं किया।

यह काम किया था:

 let attributes = [ NSFontAttributeName : UIFont(name: "Helvetica Neue", size: 12.0)!, NSUnderlineStyleAttributeName : 1, NSForegroundColorAttributeName : UIColor.darkGrayColor(), NSTextEffectAttributeName : NSTextEffectLetterpressStyle, NSStrokeWidthAttributeName : 3.0] var atriString = NSAttributedString(string: "My Attributed String", attributes: attributes) 

स्विफ्ट 2.1 – एक्सकोड 7

 let labelFont = UIFont(name: "HelveticaNeue-Bold", size: 18) let attributes :[String:AnyObject] = [NSFontAttributeName : labelFont!] let attrString = NSAttributedString(string:"foo", attributes: attributes) myLabel.attributedText = attrString 
 extension UILabel{ func setSubTextColor(pSubString : String, pColor : UIColor){ let attributedString: NSMutableAttributedString = self.attributedText != nil ? NSMutableAttributedString(attributedString: self.attributedText!) : NSMutableAttributedString(string: self.text!); let range = attributedString.mutableString.range(of: pSubString, options:NSString.CompareOptions.caseInsensitive) if range.location != NSNotFound { attributedString.addAttribute(NSForegroundColorAttributeName, value: pColor, range: range); } self.attributedText = attributedString } } 

मैंने एक ऑनलाइन टूल बनाया जो आपकी समस्या को हल करने जा रहा है! आप अपनी स्ट्रिंग लिख सकते हैं और शैलियों को ग्राफ़िक रूप से लागू कर सकते हैं और टूल आपको उस स्ट्रिंग को उत्पन्न करने के लिए उद्देश्य-सी और तेज कोड देता है।

इसके अलावा ओपन सोर्स भी इसका विस्तार करने और पीआरएस भेजना स्वतंत्र महसूस करता है।

ट्रांसफार्मर उपकरण

Github

यहां छवि विवरण दर्ज करें

  let attrString = NSAttributedString ( string: "title-title-title", attributes: [NSForegroundColorAttributeName: UIColor.blackColor()]) 

विशेषताएं स्विफ्ट 3 में सीधे सेट हो सकती हैं …

  let attributes = NSAttributedString(string: "String", attributes: [NSFontAttributeName : UIFont(name: "AvenirNext-Medium", size: 30)!, NSForegroundColorAttributeName : UIColor .white, NSTextEffectAttributeName : NSTextEffectLetterpressStyle]) 

फिर गुणों वाले किसी भी वर्ग में वेरिएबल का उपयोग करें

आपके द्वारा बनाई गई लाइब्रेरी के साथ आपकी समस्या का समाधान करना वास्तव में आसान होगा इसे आवर्तिका कहा जाता है।

 let calculatedCoffee: Int = 768 let g = Style("g").font(.boldSystemFont(ofSize: 12)).foregroundColor(.red) let all = Style.font(.systemFont(ofSize: 12)) let str = "\(calculatedCoffee)<g>g</g>".style(tags: g) .styleAll(all) .attributedString label.attributedText = str 

768g

आप इसे यहां पा सकते हैं https://github.com/psharanda/Atributika