2015-10-02 3 views
0

Я просмотрел два представления внутри содержимого. Высота «Post Container View» (красный фон) рассчитывается динамически по высоте метки (все выполняется с использованием Autolayout).Как установить высоту ячейки UITableView динамически с помощью Autolayout?

Теперь я хочу, чтобы высота «Post Container View» (красный фон) увеличивалась, а высота увеличения высоты ячейки увеличивалась. Я хочу сделать это, используя автозапуск.

Я хочу рассчитать высоту ячейки UITableview, используя Autolayout. Как это сделать ?

Cell Height = Post Контейнер View (Flexible согласно высоте этикетки) + Image Контейнер View Height (300 Fix)

Я видел этот тип метода, но не знаю, как реализовать в мой код?

- (CGFloat)calculateHeightForConfiguredSizingCell:(UITableViewCell *)sizingCell 
{ 

    sizingCell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(self.MyTableView.frame), CGRectGetHeight(sizingCell.bounds)); 

    [sizingCell setNeedsLayout]; 
    [sizingCell layoutIfNeeded]; 

    CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; 
    return size.height + 1.0f; // Add 1.0f for the cell separator height 
} 
+0

более подробно – baydi

+0

см. обновление –

+0

использовать соотношение сторон – baydi

ответ

1

Для расчета высоты ячейки:

CGFloat height ; // take global variable 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     height = cell.PostContainerView.frame.size.height ; 
} 


- (CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath 
{ 
    height = height + 300 //(300 is Fix height of Image Container View) ; 
    return height ; 
} 
1

Вы хотите рассчитать высоту или таблицуView для расчета самой высоты, учитывая конфигурацию автозапуска?

Чтобы сделать это, не реализуют метод делегата heightForRowAtIndexPath но estimatedHeightForRowAtIndexPath вместо (с тем, что значение, которое вы хотите на данный момент).

ТаблицаView определит высоту ячейки с учетом ограничений автоопределения, применяемых к ней. Будьте предупреждены, что иногда вам нужно позвонить layoutIfNeeded на вашу камеру, после того как вы ее обновили. (Для Exemple в cellForRowAtIndexPath)

+0

Я хочу увеличить высоту TableViewCell, но какой из них я должен сделать для этого. –

+0

Учитывая вашу фактическую конфигурацию и использование моих объяснений, ваша ячейка должна быть значительно изменена. Также проверьте, что вы установили «0» на numberOfLines вашей метки (многострочный). Вы можете проверить, что он должен работать, изменяя ограничение высоты вашего Post Container View программно (имея IBOutlet вашего NSLayoutConstraint и играя с свойством _constant_) и см. Изменение высоты ячейки. – dosdos

+0

Я дал весь столбец для Post Container View и метки, который отлично работает. Теперь мой posint - высота ячейки, как будет вычисляться, когда высота Post Container View увеличится? –

0

Используйте этот Extension класс для строки:

import UIKit 

extension String {  
    func sizeOfString (font: UIFont, constrainedToWidth width: Double) -> CGSize { 
     return NSString(string: self).boundingRectWithSize(CGSize(width: width, height: DBL_MAX), 
      options: NSStringDrawingOptions.UsesLineFragmentOrigin, 
      attributes: [NSFontAttributeName: font], 
      context: nil).size 
    } } 

В UITableView Делегат вычислить UILabel ширина:

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {   
     let item = "hkxzghkfjkgjkfxkj jjhghdjajfjkshgjkhkkn jhkhhgdfgjkhsfjkdghhhsxzgnfshgfhk jhsfgfhjfhghj " 
     let widthOfLabel = Double(view.frame.size.width) - 30 
     let textHeight = item.sizeOfString(UIFont.systemFont(14), constrainedToWidth: widthOfLabel) 
      return (padding + textHeight.height) 
    } 
Смежные вопросы