1

У меня есть текст, который построен из двух строк: A (B)UINavigationItem название усечение

Я хочу использовать обе строки в качестве заголовка для UINavigationItem, но в случае усечения я хочу всего лишь быть усечены и а не B.

Пример: Название, которое я хочу, это «Быстрая коричневая лиса прыгает (над ленивой собакой)». Размер экрана слишком мал, так что название обрезает и теперь «шустрая лиса прыгает (над ...»

То, что я хочу, чтобы это:. «Быстрый уш ... (через ленивую собаку)»

Как я могу это сделать?

+0

Это поможет, если вы можете задать еще какой-либо контекст для вопроса, что вы пытаетесь сделать. Покажите нам какой-нибудь код, пожалуйста. – Jeet

+0

Было бы лучше, если бы вы объяснили подробнее ... –

+0

Добавлено и пример – YogevSitton

ответ

1

Сначала проверьте количество символов панели навигации, позволяющей в качестве заголовка без усечения. Далее, перед установкой название проверить, является ли общая длина строки меньше, чем те, количество символов или нет. Теперь, основываясь только на условии, заданном только комбинированная строка или B.

+0

как я могу проверить количество навигационных панелей символов? – YogevSitton

+0

По умолчанию он позволяет использовать максимум 28 символов. Лучше проверить длину строки заголовка должно быть меньше 18 символов. –

+0

Это позволяет использовать 28 символов на каждом размере экрана? – YogevSitton

1

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

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.navigationItem.title = "Heal the world make it a better place for you and for me and the entire human race" 
    setNavTitle(title: self.navigationItem.title!) 
} 

func setNavTitle(title: String) 
{ 
    //get the last 10 characters of your title, change the number to your need 
    let last10 = title.substring(from:title.index(title.endIndex, offsetBy: -14)) 

    //get the first 10 characters of your title, change the number to your need 
    let first10 = title.substring(to: title.index(title.startIndex, offsetBy: 14)) 

    //concatenate the strings 
    let title = first10 + " ... " + last10 
    self.navigationItem.title = title 
} 
+0

проблема с этим кодом заключается в том, что он не всегда составляет 10 символов. это изменения, основанные на размере экрана. – YogevSitton

+0

получить размер экрана (CGFloat width = [UIScreen mainScreen] .bounds.size.width;), оттуда отрегулируйте длину заголовка по мере необходимости – bubibu

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