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


Answers

स्विफ्ट एक ही 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)

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

myLabel.attributedText = attributedString
Question

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

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

var coffeeAmount: String = calculatedCoffee + attributedText

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




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
    }
}



func decorateText(sub:String, des:String)->NSAttributedString{
    let textAttributesOne = [NSAttributedStringKey.foregroundColor: UIColor.darkText, NSAttributedStringKey.font: UIFont(name: "PTSans-Bold", size: 17.0)!]
    let textAttributesTwo = [NSAttributedStringKey.foregroundColor: UIColor.black, NSAttributedStringKey.font: UIFont(name: "PTSans-Regular", size: 14.0)!]

    let textPartOne = NSMutableAttributedString(string: sub, attributes: textAttributesOne)
    let textPartTwo = NSMutableAttributedString(string: des, attributes: textAttributesTwo)

    let textCombination = NSMutableAttributedString()
    textCombination.append(textPartOne)
    textCombination.append(textPartTwo)
    return textCombination
}

// कार्यान्वयन

cell.lblFrom.attributedText = decorateText(sub: sender!, des: " - \(convertDateFormatShort3(myDateString: datetime!))")



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

यदि आप 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 रूप में दिखाया जाएगा




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

यह काम किया:

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.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 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

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




स्विफ्ट 4

let attributes = [NSAttributedStringKey.font : UIFont(name: CustomFont.NAME_REGULAR.rawValue, size: CustomFontSize.SURVEY_FORM_LABEL_SIZE.rawValue)!]

let attributedString : NSAttributedString = NSAttributedString(string: messageString, attributes: attributes)

आपको स्विफ्ट 4 में कच्चे मान को हटाने की जरूरत है




स्विफ्ट 4:

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