ios - Eureka : Dynamic height of custom row

标签 ios swift eureka-forms

我制作了一个自定义单元格,它应该只有一个 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()

}

初始化表单时,单元格获得正确的高度,适合“testImage”,但图像更改后高度保持不变。

如何让单元格动态改变它的高度?

最佳答案

不确定我是否回答了你的问题,也许你可以试试我的功能:

(1)您可以创建一个 NSMutableDictionary 来记住单元格的高度。当高度改变时,重新加载 tableView 或 section 或 indexPath。

(2) 您也可以使用 ReactiveCocoa 来解决该问题。首先,我建议你了解一下 KVO、MVVM、Hook

(3) 我们的项目设置事件图像 url 是这样的:http://example.com/data/img.gif?width=271&height=360

因此我们可以轻松获取事件 imageView 的大小并更新“heightForRowAtIndexPath:”函数。

enter image description here enter image description here

关于ios - Eureka : Dynamic height of custom row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42637017/

相关文章:

ios - 限制 iOS 访问网站

ios - 首次加载时 UICollectionViewCell 内容大小错误

ios - 如何检测我点击的行是通过 Eureka 表单生成器中的 MultivaluedSection 插入的?

c# - 如何使用 Windows 添加到我的 c# Selenium Webdriver 套件以合并 native iPhone 应用程序测试

ios - 如何正确组合 CGAffineTransform 矩阵?

ios - 在 Alamofire 中一次只处理一个请求?

swift - 在 parent 之间切换 - SpriteKit

ios - UIView.animateWithDuration 或 UIScrollView.animateWithDuration - 如何在当前状态暂停

ios - swift Eureka : Adding text value to ButtonRow

ios - 如何使用 Eureka 制作两个互斥的分段行