2015-08-19 5 views
2

У меня есть CollectionViewCell, который имеет только UILabel (То же, что и ячейка). Я выборка массива fontNames как CollectionView DataSource:UILabel Dynamic Размер шрифта продолжает ломаться

func printFonts() { 
     let fontFamilyNames = UIFont.familyNames() 
     for familyName in fontFamilyNames { 
      let names = UIFont.fontNamesForFamilyName(familyName as! String) 
      fontNames.append(familyName as! String) 

     } 
    } 

Я пытаюсь показать это имена шрифтов в один линии внутри UILabel, она работает в некоторых случаях, но в некоторых нет, и я не знаю, почему. это, как я "настроить" шрифт внутри cellForItemAtIndexPath:

cell.lbl_font.adjustsFontSizeToFitWidth = true 
    cell.lbl_font.numberOfLines = 1 
    cell.lbl_font.minimumScaleFactor = 0.1 
    cell.lbl_font.baselineAdjustment = .AlignCenters 
    cell.lbl_font.textAlignment = NSTextAlignment.Center 

, а я изменил это свойство через раскадровку:

desc

Результат:

desc

UPDATE:

Как применить текст к ячейке. где lbl_font это метка внутри клетки, Внутри cellForItemAtIndexPath

let cell : textCell = collectionView.dequeueReusableCellWithReuseIdentifier("text_cell", forIndexPath: indexPath) as! textCell 
     cell.lbl_font.text = fontNames[indexPath.row] 
     cell.lbl_font.font = UIFont(name:fontNames[indexPath.row], size: cell.lbl_font.font.pointSize) 
     cell.lbl_font.adjustsFontSizeToFitWidth = true 
     cell.lbl_font.numberOfLines = 1 
     cell.lbl_font.minimumScaleFactor = 0.1 
     cell.lbl_font.baselineAdjustment = .AlignCenters 
     cell.lbl_font.textAlignment = NSTextAlignment.Center 
     return cell 
+0

непонятно мне, чего вы хотите достичь. Используете ли вы автоматический макет? если co вы можете показать ограничения. Как создавать ячейки и обновлять их данные? –

+0

Нет, им не использовать autoLayout. Я объяснил выше о CV DataSource. И я просто хочу представить текст внутри UILabel без трех точек (...)/сломать слова, которые происходят как изображение выше. Плюс - отображение в 1 строке, а не многострочный –

+0

, но что, если текст слишком длинный? как вы хотите справиться с этим? Вы добавляете текст, но он может, но далеко вперед, чтобы соответствовать ячейке –

ответ

2

Существует минимальный шрифт сжиматься свойство доступно. он уменьшает размер шрифта как минимальное соотношение с текущим размером точки. Если контент станет больше, чем отношение шрифтов, то он будет демонстративно показывать точки усечения (...) в конце.

Например:

Здесь Я настраиваю свойство с минимальным масштабом шрифта составляет 0,4.

enter image description here

И здесь вы можете увидеть различные тексты, применяемые с тем же свойством.

enter image description here

В первой и второй этикетке будет регулировать размер шрифта, потому что содержание меньше и отрегулировать в соответствии с минимальным коэффициентом масштаба шрифта. но в 3-м минимальное отношение шрифтов и содержимое метки не совпадают, тогда оно будет показывать точки (...) с усечением.

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

Упование вы получите помощь от ответа.

+0

Спасибо за ваш ответ Ашиш, как вы можете видеть, это именно то, что я сделал. Ваш третий ярлык - это то, что происходит со мной, как я могу исправить это, что третий ярлык не сломается с вашего примера? –

+0

Брат @roimulia Я уже упоминал, что: Для этого вопроса вы должны знать, что, как матовый контент должен быть показан на этой этикетке или для использования с использованием теста, вы можете использовать многострочную метку. Или измените минимальное соотношение шрифтов –

+0

@roimulia Если вы измените минимальное соотношение шрифтов до 0,2, то оно снова будет соответствовать ширине :) Поэтому мы не можем судить о минимальном соотношении шрифтов. Надеюсь, ты добираешься. И размер шрифта также слишком мал, и это плохо. –