2017-05-27 17 views
0

セル内のサブビューのaddSubviewをアニメートしたいと思います。テーブルビューのセルは動的な高さを持つため、折りたたみと展開のアニメーションはネイティブで実行されます。動的セルの高さを持つセルでサブビューを追加するアニメーション

これはコードです:

// MARK: UITableViewDelegate 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    if let selectedCell = tableView.cellForRow(at: indexPath) as? MyCell { 
    selectedCell.showExtraView() 
    expandedCells.insert(indexPath) 
    } 
    if let prevSelectedCell = tableView.cellForRow(at: prevIndexPath) as? MyCell { 
    prevSelectedCell.hideExtraView() 
    expandedCells.remove(prevIndexPath) 
    } 
} 

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { 
    if expandedCells.contains(indexPath) { 
    return CGFloat(100.0) 
    } else { 
    return CGFloat(80.0) 
    } 
} 

セルコード:サブビュー(extraView)が含まれ

enter image description here

// MyCell 

func showExtraView() { 
    contentView.addSubview(extraView) 
    contentView.setNeedsLayout() 
} 

func hideExtraView() { 
    extraView.removeFromSuperview() 
    contentView.setNeedsLayout() 
} 

これは以下のようにそれが見えるものです画像とラベル。ラベルは正しくアニメーションされますが、イメージはアニメーションの一部でないかのように表示されます。

答えて

0

代わりにあなたのアルファベットのアルファベットを入力してください。アニメーションブロック内でアルファを0.0から1.0に変更します。

func showExtraView() { 

    extraView.alpha = 0.0 

    UIView.animate(withDuration: 0.6) { 

     contentView.addSubview(extraView)  
     extraView.alpha = 1.0 
     self.contentView.layoutIfNeeded() 

    } 
} 

func hideExtraView() { 

    UIView.animate(withDuration: 0.6, animations: { 
     extraView.alpha = 0.0 
     self.contentView.layoutIfNeeded() 
    }) { (completed) in 
     extraView.removeFromSuperview() 
    } 
} 
関連する問題