2016-08-15 64 views
1

我知道如何制作一个自定义自定义大小的单元格。但由于某种原因,我在尝试制作默认的多线时遇到了挑战。如何制作自定义基本UITableViewCell?

我目前想要的是一个只有一个标签的单元格。因此,默认的内置样式“Basic”似乎是最简单的解决方案。但它只显示2行文字。

我目前的设置:一个静态的UITableView和一个UITableViewController包含出口到一些需要配置的单元格。

事情我想:行

  • 定数0
  • 一套表视图的行高UITableViewAutomaticDimension
  • 覆盖heightForRowAtIndexPath所以它总是返回UITableViewAutomaticDimension
  • 呼叫sizeToFitsetNeedsLayoutlayoutIfNeeded在单元和/或内容视图和/或文本标签上
  • set cust OM单元格高度为0分镜
  • 增加垂直和水平的内容拥抱优先事项标签

编辑:

我想我是不是有什么问题究竟出真正清楚。我没有使用自定义单元格。我试图脱离基本的一个。

cell

这意味着你可以不加任何约束它的标签。当然,你可以编程,但因为一切都是内部管理的Apple内置样式,可能会导致冲突。

其他细节:

在这一点上(正如我上面提到的),我有一个网点一个UITableViewController特定的细胞:@IBOutlet weak var descriptionCell: UITableViewCell!

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.rowHeight = UITableViewAutomaticDimension 
} 

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

难道真的可能吗?由于我已经花费了太多的时间试图避免制作自定义单元格,所以我终于可以做到了。无论如何,任何解决方案是受欢迎

+0

堆栈溢出不是教程的正确位置。我建议你编辑你的问题,以显示你的tableview控制器代码,一个带有约束的单元格的图像,并列出问题是什么以及什么不工作。现在你的问题太广泛了。 –

+0

按照下面的步骤: - http://www.programmingcrew.in/2015/09/uitable-view-cell-dynamic-height-ios7.html – pkc456

+0

@RoboticCat好吧,我编辑了原来的帖子,但仍然没有太多的代码参与其中。我以为我可以逃脱一个基本的细胞,但事实证明我不能。 – David

回答

0

不需要做以下两件事。

  • 呼叫sizeToFit,setNeedsLayout,layoutIfNeeded对细胞和/或内容视图和/或文本标签
  • 组自定义单元格高度为0分镜

而且你应该检查你的标签的限制。例如,它应该在运行时具有固定的宽度,并且对单元格的顶部和底部有约束。所以细胞会自我增长。

+0

这确实有效,除非你使用内建样式的单元格(在我的情况下是“基本”)。我编辑了我的原始帖子和额外的细节。 – David

0

试试这个办法:

  1. 线的集数为0
  2. 设置表视图的行高UITableViewAutomaticDimension
  3. 覆盖heightForRowAtIndexPath所以它总是返回UITableViewAutomaticDimension
  4. NsLayConstraints用于标签:

    top = cell.top 
    bottom = cell.bottom 
    leading = cell.leading.padding 
    trailing = cell.leading.padding (Padding is optional) 
    
+0

但是,当使用内置单元格样式(在我的情况下为“基本”)时,确实没有向标签添加约束的好方法。我编辑了我的原始帖子和额外的细节。 – David

+1

没有UITableViewAutomaticDimension和估计的高度属性,你不能做到这一点。据我所知,没有办法做到这一点。 只能在约束上进行中继。 –

0

它适合我。所有你需要在你的代码做的是你之后“设置表视图的行高UITableViewAutomaticDimension”上市

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.estimatedRowHeight = 44.0 // or whatever height is closest to what your cells will be 
    tableView.rowHeight = UITableViewAutomaticDimension 
} 

一切是没有必要的。只需将您的单元格标签中的行数设置为0,就像您所做的一样,并包含上面的代码。