当前位置: 首页 > 知识库问答 >
问题:

根据内容的TableView的textLabel高度

孔睿
2023-03-14

我做了一个折叠的表视图。表视图的标签大小不会随着内容的增加而增加。我已经设置了单词包装和行= 0,但它仍然不起作用。我正在使用2 tableView单元格来制作折叠视图。

extension UIView {
func rotate(toValue: CGFloat, duration: CFTimeInterval = 0.2, completionDelegate: AnyObject? = nil) {
    let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation")
    rotateAnimation.toValue = toValue
    rotateAnimation.duration = duration
    rotateAnimation.removedOnCompletion = false
    rotateAnimation.fillMode = kCAFillModeForwards

    if let delegate: AnyObject = completionDelegate {
        rotateAnimation.delegate = delegate
    }
    self.layer.addAnimation(rotateAnimation, forKey: nil)
}
}

class CollapsibleTableViewController: UITableViewController {
struct Section {
    var name: String!
    var items: [String]!
    var collapsed: Bool!

    init(name: String, items: [String], collapsed: Bool = false) {
        self.name = name
        self.items = items
        self.collapsed = collapsed
    }
}

var sections = [Section]()

override func viewDidLoad() {
    super.viewDidLoad()

    sections = [Section(name: "TEXT OVER HERE", items: ["TEXT OVER HERE."])]
}

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return sections.count
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return (sections[section].collapsed!) ? 0 : sections[section].items.count
}

override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    let header = tableView.dequeueReusableCellWithIdentifier("header") as! CollapsibleTableViewHeader

    header.toggleButton.tag = section
    header.titleLabel.text = sections[section].name
    header.toggleButton.rotate(sections[section].collapsed! ? 0.0 : CGFloat(M_PI_2))
    header.toggleButton.addTarget(self, action: #selector(CollapsibleTableViewController.toggleCollapse), forControlEvents: .TouchUpInside)

    return header.contentView
}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell!

    cell.textLabel?.lineBreakMode = NSLineBreakMode.ByWordWrapping
    cell.textLabel?.numberOfLines = 0
    cell.textLabel?.text = sections[indexPath.section].items[indexPath.row]



    return cell
}

//
// MARK: - Event Handlers
//
func toggleCollapse(sender: UIButton) {
    let section = sender.tag
    let collapsed = sections[section].collapsed

    // Toggle collapse
    sections[section].collapsed = !collapsed

    // Reload section
    tableView.reloadSections(NSIndexSet(index: section), withRowAnimation: .Automatic)
}

}

共有2个答案

姬歌者
2023-03-14

更好的答案是:https://stackoverflow.com/a/29763200/1054550

self.tableView.sectionHeaderHeight = UITableViewAutomaticDimension;
self.tableView.estimatedSectionHeaderHeight = 25;
易烨磊
2023-03-14

尝试以下代码:

 func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {

    var lblSectionName: UILabel = UILabel()
    lblSectionName.text = self.sectionNames[section]
    lblSectionName.numberOfLines = 0
    lblSectionName.lineBreakMode = .ByWordWrapping
    lblSectionName.sizeToFit()
    return lblSectionName.frame.size.height
}

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    var lblSectionName: UILabel = UILabel()
    lblSectionName.text = self.sectionNames[section]
    lblSectionName.numberOfLines = 0
    lblSectionName.lineBreakMode = .ByWordWrapping
    lblSectionName.sizeToFit()
    return lblSectionName
}
 类似资料:
  • 我正在使用ITextRenderer从HTML生成PDF,我需要做的是一张收银机收据。这张收据有动态宽度,当然还有动态内容。这就是说,内容的高度总是不同的,现在我正在努力寻找一种方法来根据内容调整PDF页面的高度。如果收据太大,最后会有一个长长的白色部分,如果是为了缩短PDF的页码,我只需要在一页中。 我正在使用设置页面大小,但根据宽度和数据计算内容高度几乎是不可能的(非常痛苦)。 这是生成 PD

  • 我知道这个问题已经问了100次了,但我还是没办法让它奏效。我希望TableView中充满存储在数据库中的内容。 我用一个空的TableView得到了我的FXML(这里的第一个问题:我应该已经设置列了吗?) 这就是我从数据库中获取数据并进入TableView的方法。我把som系统打印出来,检查它是否给了我正确的东西。问题是我在“tableview.getColums().addAll.col”中得到

  • 问题内容: 我在自定义单元格中遇到有关UITextView的问题。除了我的问题,textView的工作原理也很完美。我已经设置了UITextViewDelegate方法,所以当textview发生问题时,我已经连接了那些方法。 我想知道如何让我的自定义单元随着用户的输入而动态增加其高度。一旦用户点击了textview的行尾,也要让textview自动添加另一行。我已经在网上搜索了一段时间,该问题的

  • 问题内容: 我正在开发类似iGoogle的应用程序。使用iframe显示其他应用程序(在其他域上)的内容。 如何调整iframe的大小以适合iframe内容的高度? 我试图破译Google使用的javascript,但它被混淆了,到目前为止,在网络上搜索毫无结果。 更新: 请注意,内容是从其他域加载的,因此适用同源策略。 问题答案: 我们遇到了这类问题,但与您的情况略有不同我们向其他域上的网站提供

  • 问题内容: 在以Swift编写的iOS应用程序中使用自动布局时,如何根据内容调整textField的大小? 加载视图时以及用户键入时,文本字段将根据需要调整大小以适合其内容。 理想情况下,文本字段将在某个点(例如6行)处停止调整大小,并变为可滚动。 问题答案: 您必须使用而不是。 然后,您可以使用该方法。 但是首先,您必须知道一条线的高度。您可以使用以下方法获取该信息: 之后,只需在方法内部调用方

  • 我在我的项目中使用具有自动布局的情节提要(XCode 6.3),起诉大小类Wcompact h规则。我无法根据内容动态设置 UITableView 标头的高度。