iphone-код для автоматического изменения размера uiLabel & uiTableViewCell при изменении шрифта? - PullRequest
0 голосов
/ 07 марта 2011

Может ли кто-нибудь обобщить ключевые части кода объективного кода, которые помогут в решении этой проблемы.

Цель - автоматическое изменение размера UITableView после изменения пользователем размера шрифта. Поэтому, если пользователь увеличивает или уменьшает шрифт, обе высоты (a) uiLabel должны измениться, чтобы обеспечить хорошее включение текста, и (b) высоты uiTableViewCell также должны быть отрегулированы.

Предполагается, что:

  1. UITableView был расширен с помощью создание собственного вида ячейки - т.е. создать новое представление в NIB, которое формы для просмотра содержимого Ячейки UITableView
  2. каждый заказ ячейка имеет четыре UILabel's, которые образуют 2 х 2 скороговорки UILabels - то есть два в верхней строке и два в нижней строке
  3. так как пользователь увеличивает шрифт горизонтальный интервал UILabels останется прежним, Однако высота этикетки будет изменить

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

  1. Это нормально, что отправной точкой здесь является уже выложенный пользовательский UITableViewCell в InterfaceBuilder? (или решение требует, чтобы оно было построено полностью программно)?
  2. Как рассчитать высоту метки? Это просто с помощью метода NSString "sizeWithFont: minFontSize: actualFontSize: forWidth: lineBreakMode:", и мне нужно добавить дополнение для полей и т. Д.?
  3. Как программно увеличить высоту надписей динамически - в каком методе вы это делаете и как изменить саму высоту
  4. Как обеспечить, чтобы когда UILabel вверху расширялась и росла, она автоматически толкала UILabel во 2-й строке? Происходит ли это по умолчанию или есть определенные свойства / настройки, которые вам необходимы, чтобы это произошло.
  5. Как автоматически увеличить высоту TableViewcell после того, как это произошло. В каком методе это сделать и как программно выполнить увеличение и перерисовку.

Надеюсь, это имеет смысл.
спасибо

Ответы [ 2 ]

2 голосов
/ 07 марта 2011

Чтобы высота UILabel соответствовала вашему целевому шрифту, вы используете функцию sizeWithFont NSString.

NSString *myText = @"Go Hokies";
UIFont *myFont = [UIFont boldSystemFontOfSize:15];
CGFloat lineHeight = [myText sizeWithFont:myFont].height;

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

myUILabel.minimumFontSize = 10;
myUILabel.adjustsFontSizeToFitWidth = YES;
2 голосов
/ 07 марта 2011
  1. Вы можете использовать файл XIB в качестве макета по умолчанию, а затем корректировать позицию / размер позже во время выполнения.
  2. Да, используйте этот метод для расчета необходимой высоты.Вы должны сами добавить поля между метками.
  3. Изменить рамку метки.
  4. Вам нужно вычислить x, y базы меток 2-й строки по x, y, высоте от 1-йметка строки + поле.
  5. перехватывает следующим методом и возвращает новую высоту:
    • (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath
...