使用部分动画UITableView的单元格高度变化会导致伪影

时间:2017-08-13 02:21:54

标签: ios uitableview

我得到一条白色线条,在细胞高度变化动画期间通过折叠的区域标题进行动画显示。请注意,仅当选择单元格导致上方部分的高度更改时,才会发生折叠部分标题。

此处代码:https://github.com/sketch34/ios-swift-collapsible-table-section

enter image description here

非常简单的设置。重新加载选中的行:

    ## Enable gzip compression ##
    # compress text, HTML, JavaScript, CSS, and XML
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript

    # Remove browser bugs
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    Header append Vary User-Agent
    ## END Enable gzip compression ##

如果选择了更改单元格内容:

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    selectedRow = indexPath
    self.tableView.reloadRows(at: [selectedRow], with: .automatic)
}

除了屏幕截图中的工件外,我无法在第一时间看到白线的来源。我试过了:

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell: CollapsibleTableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell") as? CollapsibleTableViewCell ??
        CollapsibleTableViewCell(style: .default, reuseIdentifier: "cell")
    let item: Item = sections[indexPath.section].items[indexPath.row]
    cell.nameLabel.text = item.name

    // *** This line changes cell contents if selected ***
    cell.detailLabel.text = (selectedRow != nil) && indexPath.elementsEqual(selectedRow!) ? item.detail : ""

    return cell
}

更多细节:

// In my UITableViewHeaderFooterView.
self.backgroundColor = UIColor.clear
self.backgroundView?.backgroundColor = UIColor.clear

// In my UITableViewController.
self.tableView.separatorStyle = UITableViewCellSeparatorStyle.none

0 个答案:

没有答案