首页 > 解决方案 > iOS Swift 更新到 UI 延迟

问题描述

我有一个 UIView 的子类。在本课程中,我想在更改特定布尔标志时更改背景。(我通过 控制这个标志touchesBegan

下面是我的代码。

class TileView: UIView {

    let selectedBackgroundColor: UIColor = .cyan
    let nonSelectedBackgroundColor: UIColor = .white

    private var isSelected = false {
        didSet {
            backgroundColor = isSelected ? self.selectedBackgroundColor : self.nonSelectedBackgroundColor
            print("isSelected: " + String(isSelected))
        }
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
       isSelected = !isSelected
    }
}

touchesBegan被触发时,我进入isSelected: true控制台,但背景颜色没有改变。

我注意到,在视图中点击后,如果我点击视图之外屏幕上的其他位置,它会改变颜色。

我对可能导致这种情况的原因感到困惑。

编辑:

这是行为的简短记录,因为我的描述不够清楚。记录中的每个白色方块都是一个 TileView。 https://gyazo.com/e8152d18b4efe1c5b1c6c04b55b661fe

标签: iosswiftuser-interfaceswift4

解决方案


所以我发现我的代码很好,问题是模拟器没有正确更新。有关详细信息,请参阅此处的答案。

iOS 模拟器无法正确刷新


推荐阅读