UIView在动画块中忽略setHidden

Nic*_*ski 2 hidden uiview ios swift uistackview

我在UIView子类上有这个代码:

override var hidden: Bool {
    willSet {
        DDLogDebug("Will set hidden=\(String(newValue)) on \(item?.name))")
    }
    didSet {
        DDLogDebug("Did set hidden=\(String(hidden)) on \(item?.name))")
    }
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我设置false但仍然true如下所示:

> Will set hidden=false on Optional("74D8E4CE-5E14-4914-8483-E9F66D2A79B7"))

> Did set hidden=true on Optional("74D8E4CE-5E14-4914-8483-E9F66D2A79B7"))
Run Code Online (Sandbox Code Playgroud)

这个问题的唯一特点是它只在UIView.animateWithDuration(...)块内运行时才会发生.如果我删除动画,则属性设置正确.

对可能发生的事情的任何想法?这让我发疯,呵呵

编辑:

多一点信息,这个我想隐藏的UIView是arrangedSubview一个UIStackView.它适用于前几次尝试,但突然停止工作,没有任何明显的模式.

Nic*_*ski 6

这是UIStackView中的一个错误.

是另一个问题,描述了我遇到的完全相同的问题.是针对这一特定问题的开放式雷达.

我发现的解决方案是避免hidden两次设置相同的值.

if (subview.hidden) {
    subview.hidden = false
}
Run Code Online (Sandbox Code Playgroud)