2015-01-30 3 views
0

Я пытаюсь построить канал, который следует так:iOS8 Dynamic Cell Height на основе высоты динамической метки

enter image description here

Верхняя левая метка представляет собой имя пользователя, в правом верхнем углу есть отметка о времени. Ниже - дескриптор, а затем третий ярлык вниз - динамическое тело сообщения. Две кнопки на нижней стороне делают что-то, что меняет ярлык справа.

Две вещи, которые я пытаюсь выполнить: я успешно использовал автоматическую компоновку, чтобы ограничить верхнюю левую метку сверху и слева. Я успешно использовал авто-макет, чтобы ограничить верхнюю правую метку сверху и справа. У меня есть явная ширина, установленная в верхнем левом макете, так что если имя пользователя слишком длинное, оно будет усекаться перед верхней правой меткой. Первый вопрос: возможно ли сделать динамику ширины таким образом, чтобы верхняя правая метка оставалась оштукатуренной в верхнюю и правую часть ячейки, а верхняя левая метка усекается, если она находится в сантиметре от верхней правой метки? Это важно для разных размеров экрана.

Следующий: Я успешно установил ярлык динамической высоты (третий сверху вниз), чтобы иметь ширину всей ячейки, ограничив ее левым и правым краями. Я также попытался ограничить его на дне, но именно здесь я столкнулся с огромной проблемой. Текст просачивается в следующую ячейку, если она слишком длинная. Я знаю, почему это происходит, но я не знаю, как это исправить.

Если у меня нет:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return 128 
} 

в моем коде, то я бегу в это: «Предупреждение только один раз: Обнаружен случай, когда ограничения двусмысленно предложить высоту нуля контенте Tableview клетки Мы рассматриваем развал непреднамеренно и вместо этого используем стандартную высоту ».

Однако, когда я помещаю этот код в свой контроллер просмотра, метка имеет динамическую высоту, но из-за постоянной высоты каждой строки она протекает. Я не знаю, как смягчить это, потому что без этой строки предупреждение, как указано, использует вместо него стандартную высоту, которая объединяет все мои ярлыки и кнопки вместе поверх самих себя (а потом по какой-то причине текст динамической метки больше не имеет динамическую высоту, но вместо этого соответствует одной строке).

Как исправить эту проблему? Я был озадачен и застрял на этом в течение долгого времени.

ответ

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

  • Второй вопрос: проблема в том, что вы не полностью определяете высоту. У вас должны быть ограничения всего от верхней части ячейки до нижней части ячейки, так что высота ячейки жестко определяется ее содержимым изнутри.

+0

Как решать приоритеты? – David

0

Для установки динамической высоты для ячейки просто установите динамическую высоту и ширину для своей метки. Путем установки приоритета обнимать

  1. содержания этикетки меньше, чем 1000.
  2. А также избегать, чтобы установить ограничения для высоты и ширины к метке.
  3. Просто установите ограничения для Топ, слева и если нижний элемент доступен , тогда также установите нижние ограничения.
Смежные вопросы