对于KVO来说,在Swift3中使用这个伟大的帖子中的技术"很容易"...
我怎么KVO UIView的alpha?
目标:想象一个小视图的屏幕V.屏幕有一个大的桌面视图.每个单元格都有一个小视图CV.
我希望每个CV跟随1 V的α,实际上在五的Alpha的动画
(我能想到的唯一真正的替代品是CADisplayLink细胞并轮询V的alpha,这种情况很糟糕.)
1原因是什么?这是跨单元格同步alpha变化的唯一方法.
注意正如Rob在下面解释的那样,实际上图层的alpha不具有动画效果.(它只是在动画开始时"立即"设置为新值.)实际上,您必须遵循表示层.这是一个逆向过程的例子,从你想要的每一次抽奖中拉出来
let d = CADisplayLink(target: self, selector: #selector(ThisClassName.updateAlpha))
d.add(to: RunLoop.current, forMode: RunLoopMode.commonModes)
func updateAlpha() {
let a = leader.layer.presentation()?.value(forKey: "opacity") as! CGFloat
follower.alpha = a
}
Run Code Online (Sandbox Code Playgroud)