首页 > 解决方案 > 在 didset 之后对象值不会改变

问题描述

我正在使用一些可可豆荚框架来制作 UICollectionView。我能够为每个单元格和设置视图获取正确的数据。

我想拥有不一样的ani

动画结束点应该和dataSource的值有关。问题是我不能如愿使用didSet值。我添加的子视图的框架是(0,0,0,0),对象的值保持与didSet之外的初始值相同。我无法访问 setupView 函数中的数据源值。

预期效果是红色条将从左侧移动到右侧位置:

class CereCell : DatasourceCell {

    override var datasourceItem: Any?{
        didSet {
            guard let cere = datasourceItem as? CeremonyDay else { return }
            nameLabel.text = cere.name
            nameLabel.frame = CGRect(x: 0, y: 0, width: 10, height: 10)
currentBar.frame = CGRect(x: 100, y: 100, width: cere.percentage*100 , height: 10)

            position.x = cere.percentage

        }
    }

    let currentBar: UIView =  {
        let currentBar = UIView(frame: CGRect(x: 290, y: 100, width: 300, height: 10))
        currentBar.backgroundColor = .red
        return currentBar
    }()


    override func setupViews() {
        super.setupViews()
        contentView.addSubview(currentBar)
        let frame = currentBar.frame
print(frame)

它只是打印 (290, 100, 300, 10),这不是 didSet 中的值。

标签: iosswiftuicollectionviewdidset

解决方案


推荐阅读