Динамический просмотр текста с арабским вводом текста

Я использую динамический просмотр текста.

func textViewDidChange(_ textView: UITextView) {
        let str = textView.text! as NSString
        let size = str.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 20.0)])
        textView.frame = CGRect(origin: textView.frame.origin, size: size)
    }

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

1 ответ

Сначала проверьте систему координат экрана iPhone ниже.

Я говорю, что если вы увеличите ширину, это всегда будет увеличивать ширину вправо в iPhone. Поэтому установите исходный источник UITextView максимально правым, а затем уменьшите координату X источника на вычисляемый вами размер "размер", а затем установите новые значения источника и размера для фрейма UITextView. Надеюсь, ты понимаешь.

Например:

Допустим, ваш исходный источник UITextView имеет значение (300,30), а размер (30,30). Теперь вы вводите некоторый текст на арабском языке и рассчитываете размер текста как 100. Теперь X вашего нового источника будет 300 - 100 = 200

so newOrigin = (200,30)
and newSize = (100,30)

Теперь установите UITextView frame as- textView.frame = CGRect(origin: newOrigin, size: newSize)

Другие вопросы по тегам