2017-03-06 63 views
1

我製作了自定義單元格,應該只有一個UIImageView。電池應更改爲適合圖像的高度,當圖像被改變:尤里卡:自定義行的動態高度

import UIKit 
import Eureka 

public class FirebaseImageCell: Cell<UIImage>, CellType{ 

    @IBOutlet weak var customImageView: UIImageView! 

    public override func setup() { 
     super.setup() 
    } 

    public override func update() { 
     super.update() 

     guard let image = row.value else { return } 
     customImageView.image = image 

     guard let cellWidth = UIApplication.shared.keyWindow?.frame.width else { return } 
     height = { cellWidth * (image.size.height/image.size.width) } 
    } 

} 

public final class FirebaseImageRow: Row<FirebaseImageCell>, RowType { 
    required public init(tag: String?) { 
     super.init(tag: tag) 
     cellProvider = CellProvider<FirebaseImageCell>(nibName: "FirebaseImageCell") 
    } 
} 

我創建的行這樣的:

let image = UIImage(named: "testImage")! 

let testSection = Section("Test Section") 
    <<< FirebaseImageRow("firebaseImageRow") { row in 
      row.value = image 
     } 
form +++ testSection 

在某一點上我想更改單元格中的圖像,並且單元格應該改變它的高度以適合圖像。在這裏,我改變形象:

func imageChange() { 

    guard let imageRow = form.rowBy(tag: "firebaseImageRow") as? FirebaseImageRow else { return } 
    let image = UIImage(named: "testImage2")   
    imageRow.value = image 
    imageRow.updateCell() 

} 

當窗體初始化的細胞得到正確的高度,fittet爲「testImage」,但圖像被改變後的高度保持不變。

如何讓細胞動態地改變它的高度?

回答

1

不知道如果我回答你的問題,也許你可以試試我的功能:

(1)您可以創建一個的NSMutableDictionary記憶細胞的高度。當高度改變時,重新加載tableView或section或indexPath。

(2)您也可以使用ReactiveCocoa來解決該問題。而首先,我建議你瞭解KVO,MVVM,勾

(3)我們的項目設置活動圖像的URL這樣的:http://example.com/data/img.gif?width=271&height=360

,所以我們可以很容易得到有效的ImageView大小和更新「heightForRowAtIndexPath :「功能。

​​ enter image description here

相關問題