在 iOS 中加载旁遮普语文本

Load text in Punjabi language in iOS

我收到了后端的回复,格式如下,我想同时显示旁遮普语、Gurmukhi 旁遮普语和英语的内容,

  {
            "AK_Index" = "APNE SEVAK KEE AAPE RAKE";
            Ang = 747;
            Author = "Guru Arjan Dev Ji";
            Bani = "<null>";
            "Bani_ID" = "<null>";
            English = "Guru Nanak has met the Supreme Lord God; I am a sacrifice to Your Feet. ||4||1||47||";
            "English_Initials" = gnmptckb;
            Gurmukhi = "guru nwnku imilAw pwrbRhmu qyirAw crxw kau bilhwrw ]4]1]47]";
            "Gurmukhi_Initials" = "gnmpqckb]";
            ID = 32133;
            Kirtan = Kirtan;
            "Kirtan_ID" = 2853;
            Punjabi = "gurU nwnk Awpxy prm pRBU nUM iml ipAw hY Aqy aus dy pYrW qoN GolI jWdw hY[";
            Raag = "Raag Soohee";
            "Teeka_Arth" = "hy pRBU! mYN qyry crnW qoN sdky jWdw hW[ ijs mnu`K nUM gurU nwnk iml ipAw, aus nUM prmwqmw iml ipAw ]4]1]47]";
            "Teeka_Pad_Arth" = "kau = nUM, qoN ]4]1]47]";
        }
    

附件是结果的截图。截图来自android。我想要 iOS.

中完全相同的结果

如何在 iOS 中实现这一点。 任何帮助将不胜感激。

我创建了一个扩展来更改某些特定字符串的颜色字体。

extension NSMutableAttributedString {

func setFontColorAndSize(_ textToFind : String,withColor color: UIColor,andFont font :UIFont){
    let range = self.mutableString.range(of: textToFind, options: .caseInsensitive)
    if range.location != NSNotFound {
        setAttributes([NSAttributedStringKey.font : font,NSAttributedStringKey.foregroundColor :color], range: range)
    }
}

// This is how you change 
let resultString = NSMutableAttributedString(string: "hello") // convert any string to mutable attributed 
resultString.setFontColorAndSize("hel", withColor: UIColor.grey, andFont: UIFont.boldSystemFont(ofSize: 17)) // pass the string you want to set particular color and font 
UILabel.attributedText = resultString // than update the label

移动端无能为力。您可以要求服务器发送 UTF-8 编码数据而不是纯英文字符串。

English = UTF-8 encoded English string data//data for hello
Gurmukhi =  UTF-8 encoded Punjabi string data //data for ਪਜੌਬਹਗਕਤਚਜ 

现在您可以创建字符串以该语言显示为:-

 let englishString = String(data: English, encoding: .utf8)
 let punjabiSring = String(data: Gurmukhi, encoding: .utf8)

初始化器是

init?(data: Data, encoding: String.Encoding)

终于使用 "Gurblipi.ttf" 字体实现了它的工作,该字体在内部将英文文本更改为旁遮普语。

let attributedString = NSMutableAttributedString()

for shabadDetail in shabadDetailList {
    attributedString.append(NSMutableAttributedString(string: shabadDetail.gurmukhi, attributes: [NSAttributedStringKey.font : FontHelper.guruLippi(fontsize: textview.font!.pointSize), NSAttributedStringKey.foregroundColor: TextFormatting.gurbaniColor]))
    attributedString.append(NSAttributedString(string: TextFormatting.doubleLineBreak))
}

textview.attributedText = attributedString
textview.textAlignment = .center

本机或后端不需要编码。