2013-05-22 1 views
0

Хорошо, поэтому я застрял. В моем приложении у меня есть представление продукта. В этом представлении есть два вложенных представления таблицы внутри прокрутки. Первое представление таблицы - только одна ячейка и содержит статический текст. Эта длина текста является динамической, на основе которой вы выбираете. Второй вид таблицы состоит из нескольких ячеек, основанных на том, сколько субпродуктов связано с этим продуктом. Таким образом, в iOS 5 было довольно легко динамически перемещать кадр каждого представления таблицы в зависимости от того, насколько большой текст был в первом представлении таблицы. Тогда я мог бы просто подсчитать высоту всех видов таблиц, и это будет высота прокрутки. Проблема в том, когда я включил автоматический макет, который получил. Из моего понимания scrollviews изменились. Мы не можем использовать размер рамки или содержимого прокрутки. Итак, первое, что я сделал, это все изменилось до противоречий. Я сделал следующее ниже.iOS 6 AutoLayout с несколькими таблицами всех динамических высот

CGSize descriptionSize = [descriptionDetail sizeWithFont: 
         [UIFont systemFontOfSize:14] 
         constrainedToSize:CGSizeMake(320, CGFLOAT_MAX) 
         lineBreakMode:NSLineBreakByWordWrapping]; 

self.theScroller.translatesAutoresizingMaskIntoConstraints= NO; 
[self.theScroller setContentInset:UIEdgeInsetsMake(0, 0, (descriptionSize.height+ (43 * [Solution count])), 0)]; 

Теперь это выше работает безупречно. Скролл-свитки отлично прокручиваются и имеют правильную высоту с автоматическим расположением.

Теперь часть, на которую я застрял, - это динамическое перемещение двух табличных представлений вверх и вниз в зависимости от того, как долго это описание или сколько ячеек находится во втором представлении таблицы? Рамки табличного представления, похоже, не влияют на то, где они расположены. Я попытался возиться с контурами, но, похоже, никуда не денусь. Любая помощь будет принята с благодарностью. Благодаря

Picture of view hierarchy

enter image description here

ответ

2

Вы могли бы сделать жизнь проще для себя, делая все это с помощью одного UITableView я думаю.

Ваш верхний UIView с UIImageView в нем - tableHeaderView, ваша первая «единственная строка UITableView» - это первый раздел в UITableView, а ваш табличный вид с динамическим содержимым находится в следующих разделах UITableView.

+0

Это действительно хорошая идея! Не знаю, почему я об этом не думал раньше. Часть меня думает, что я пробовал это раньше и столкнулся с проблемой. Я попробую еще раз и посмотрю, что я придумал. Спасибо за предложение. – mikemike396

+0

Если tableHeaderView не работает, вы также можете попробовать сделать это с двумя разными типами ячеек таблицы: один для изображения и один для остальных. – James

+0

Только что сделано, реализовав один подход к представлению таблицы. Работает как шарм! Спасибо за идею. Не могу поверить, что я не думал об этом раньше. – mikemike396

2

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

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

-(void) viewWillLayoutSubviews{ 
    [self.firstTableView layoutIfNeeded]; 
    self.firstTableViewHeightConstraint.constant = self.firstTableView.contentSize.height; 
} 

Это будет исправить это, чтобы ваш первый вид таблицы будет такой же высоты, как его контента и не будет прокручиваться. Autolayout позаботится о перемещении вашего второго стола вниз.

+0

Спасибо за идею. Похоже, это сработает. В итоге я перешел на один подход к представлению таблицы. – mikemike396

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

  • Нет связанных вопросов^_^