-1

так я пытаюсь реализовать простой английский в фарси словарь в прошивкойДобавление другого выравнивание и размер шрифта для различных линий в одном TextLabel в TableCell быстрых

я хотел бы включить оба слова в одной ячейке таблицы, проблема в том, что английский L> R и farsi R> L, также я хотел бы сделать фарси слово немного больше.

Я создал AttributedMutableString, и я подумал, что я устанавливаю все правильные значения, но похоже, что есть проблема, поскольку она не корректно отображает.

код:

cell.textLabel?.numberOfLines = 0 


var myString = "\(englishConvo[indexPath.row])\n\(farsiConvo[indexPath.row])" 
var mutableString = NSMutableAttributedString() 

var lenOfLang1 = englishConvo[indexPath.row].characters.count 
var lenOfLang2 = farsiConvo[indexPath.row].characters.count 

let increaseFontSize = UIFont(name: (cell.textLabel?.font.fontName)!, size: (cell.textLabel?.font?.pointSize)! + 5) 

let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.alignment = NSTextAlignment.Right 

mutableString = NSMutableAttributedString(string: myString) 

mutableString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSRange(location: lenOfLang1 + 1, length: lenOfLang2)) 

mutableString.addAttribute(NSFontAttributeName, value: increaseFontSize!, range: NSRange(location: lenOfLang1 + 1, length: lenOfLang2)) 


cell.textLabel?.attributedText = mutableString 

enter image description here

Если я преобразовать в строку, используя этот этот код является то, что я получаю

cell.textLabel?.text = String(mutableString) 

enter image description here

Любые мысли/идеи были бы супер оценили

+0

Но если преобразовать в строку вы выбрасываете атрибуты (стайлинга). Разве ты не стреляешь в ногу? – matt

+0

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

+0

@ Russell - функция, которую я пытаюсь реализовать, заключается в том, что пользователь может «любить» конкретную слово, так что было бы намного легче выполнить это, если бы все было в одной ячейке. – hnaderi

ответ

1

Табличные ячейки уже имеют макет, который дает вам две метки (текст и детали), так почему бы просто не использовать его? Здесь, например, в моем приложении на языке, я показываю латинское слово в текстовой метке и английский перевод на ярлыке деталей. Вы можете легко сделать то же самое с фарси и английским языком.

enter image description here

+0

Могу ли я сделать выравнивание с выравниванием по правому краю? – hnaderi

+0

Если это язык RTL, использование естественного обоснования будет _automatically_ выравнивать по правому краю! – matt

+0

hmm lemme посмотрите на это, это отличное предложение только вопрос: я хочу, чтобы деталь была больше, чем текст. фарси важнее английского, поэтому я пытался увеличить шрифт – hnaderi