2015-10-24 13 views
0

У меня есть другой шрифт для моего textField, и он отлично работает. Я могу ввести гуджаратскую шрифт в моем textField этом путь я установить шрифт:Консольная печать различного текстового шрифта swift

enter image description here

Но когда я пытаюсь напечатать текст пользователя это печать латинских букв. Предположим, я вхожу в textField как અબચ, но он печатает Optional("abc") в консоли, так что я пытался использовать attributedString, но это дает мне тот же результат и ниже мой код:

if let font = UIFont(name: "HARIKRISHNA", size: 16) { 
     let attributedString = NSMutableAttributedString(string: userText!, attributes: [NSFontAttributeName : font]) 
     print(attributedString.string) 
    } else { 
     // The font "Raleway-SemiBold" is not found 
     print("The font Raleway-SemiBold is not found") 

    } 

Есть ли способ войти выход в том же языке textField ?

Sample для получения дополнительной информации.

+0

Да. Я хочу, чтобы тот же журнал, что и пользователь, вводился в textField. @EICaptain –

+0

Вы можете изменить шрифт консоли в настройках Xcode> Fonts & Colors – Arc676

+0

Я хочу использовать этот текст для поиска в контроллере поиска. –

ответ

1

Окно консоли Xcode использует шрифт, который можно изменить в настройках Xcode , но не программно во время выполнения. Функция print() записывает «текстовое представление» аргументов . Для String, это просто сама строка:

print(textF.text!) 
// Output: 
abc 

Для приписываемой строки, текстовое представление описания содержащего строку и атрибуты:

print(textF.attributedText!) 
// Output: 
abc{ 
    NSColor = "UIDeviceRGBColorSpace 0 0 0 1"; 
    NSFont = "<UICTFont: 0x7fa6984241f0> font-family: \"HARIKRISHNA\"; font-weight: normal; font-style: normal; font-size: 14.00pt"; 
    NSParagraphStyle = "Alignment 4, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 2, Tabs (\n 28L,\n 56L,\n 84L,\n 112L,\n 140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n 308L,\n 336L\n), DefaultTabInterval 0, Blocks (\n), Lists (\n), BaseWritingDirection 0, HyphenationFactor 0, TighteningForTruncation NO, HeaderLevel 0"; 
    NSShadow = "NSShadow {0, -1} color = {(null)}"; 
} 

Вашей фактической проблемы, кажется, быть другим. Присвоение в текстовое поле специального шрифта изменяет только внешний вид строки, , а не символы самой строки.

Таким образом, если пользователь вводит "abc" то textF.text является "abc", даже если у вас есть шрифт, который отображает , что в качестве "અબચ". Поэтому сопоставление этой строки с "અબચ" не может работать.

У меня нет опыта работы с языком Гуджарати, чтобы предложить хорошее решение . Это может быть интересно узнать, что вы можете «транслитерации» иностранных языков латинского алфавита (от http://nshipster.com/cfstringtransform/):

let text = "અબચ" as NSMutableString 
CFStringTransform(text, nil, kCFStringTransformToLatin, false) 
print(text) 

В результате «абака», потому что

અ = GUARATI LETTER A 
બ = GUARATI LETTER BA 
ચ = GUARATI LETTER CA 

Но я не знаете, помогает ли это в вашем реальном приложении.

+0

Есть ли способ конвертировать 'abc' в' અબચ', как я пытаюсь с помощью 'NSMutableAttributedString' в моем вопросе? Поэтому я могу использовать его для поиска. –

+0

@DharmeshKheni: Как я уже сказал, вы конвертируете только * атрибуты *, а не сами строки. «a» и «અ» - разные символы. Если есть взаимно-однозначное соответствие от гуджарати до латинского алфавита, тогда вы можете сопоставить каждого символа с помощью фиксированного словаря. –

Смежные вопросы