В этом приложении iOS 8, которое я создаю, у меня есть табличное представление, и мне нужно, чтобы они меняли размер. Я реализовал его с помощью Auto Layout, и он работает. Почти. Вот как это выглядит сейчас.
В ячейке есть 3 ярлыка. Основной ярлык с текстом lorem ipsum. Subtitle, который имеет строку чисел (это две отдельные метки. Может быть, это путает, потому что они имеют один и тот же цвет.) Затем третий ярлык с небольшим черным текстом.
Первая метка правильно изменила размер без проблем, и вторая метка перемещается вверх и вниз соответственно. Но проблема связана с третьей небольшой меткой. Как вы можете видеть, он не изменяет размер, чтобы соответствовать всему тексту.
Теперь происходит странная вещь. Я превращаю его в ландшафт, и вот он.
Так как есть пробел, метка отображает весь текст, который он должен использовать. Хорошо. Затем я вернусь к портрету.
Теперь маленькая метка изменила размер, чтобы соответствовать всему ее тексту, но она переполняет границы ячеек. Я попытался сделать камеру больше, но она не сработала. Поскольку это ячейки для самостоятельной калибровки, я не думаю, что правильный путь даже.
Я не получаю никаких ошибок и даже не предупреждаю о своих ограничениях автомаркета.
Я установил эти две строки кода в методе viewDidLoad()
.
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
Может кто-нибудь, пожалуйста, скажите мне, что я могу делать неправильно здесь?
Поскольку его трудно ответить, просто посмотрев на изображения, и у меня больше нет кода для публикации рядом с вышеприведенным фрагментом, я загрузил исполняемый проект Xcode, демонстрирующий проблему здесь. (Есть 2 пользовательских ячейки. В основном его одна и та же ячейка только высота увеличивается во втором).
Я занимаюсь автоматическими ограничениями макета, но я не могу заставить это работать. Любая помощь будет оценена.
Спасибо.
UPDATE:
С помощью этого учебника я нашел несколько полезных указателей. В соответствии с этим, каждый subview должен иметь ограничения, которые связаны со всеми его сторонами, и должны быть ограничения, которые идут сверху вниз, что помогает автоматическому макету для вычисления высоты ячейки. В моем первоначальном посте у меня были вертикальные промежутки между каждой меткой, поэтому я думаю, что причина автоматического макета не могла рассчитать правильную высоту.
Итак, я внес некоторые изменения.
- Я уменьшил вертикальное пространство между метками до 0 и установил ограничения по вертикальному пространству между верхней и средней метками и средними и нижними метками.
- Я добавил верхние и верхние ограничения на верхнюю метку.
- Ведущий и переход к средней метке.
- Ведущий, снизу, переход к нижней метке.
Теперь вот еще одна странная часть. Когда я впервые запускаю его, проблема с обрезкой нижней метки все еще существует.
Но если я поворачиваю устройство на пейзаж и верну его обратно к портрету, все ячейки будут правильно изменены для соответствия обеим меткам!
Все еще не могу понять, почему это не происходит сначала. Обновленный проект Xcode здесь.