Ios 动画后如何读取关键路径值?

Ios 动画后如何读取关键路径值?,ios,swift,ios-animations,Ios,Swift,Ios Animations,我正在为我的“晶圆厂”按钮的显示和隐藏设置动画,但是如果晶圆厂已经显示,我想阻止它显示。如何读取当前图层比例 func hideFab(){ let materialCurve = MDCAnimationTimingFunction.deceleration let timingFunction = CAMediaTimingFunction.mdc_function(withType: materialCurve) let animation = CABasicAni

我正在为我的“晶圆厂”按钮的显示和隐藏设置动画,但是如果晶圆厂已经显示,我想阻止它显示。如何读取当前图层比例

func hideFab(){
    let materialCurve = MDCAnimationTimingFunction.deceleration
    let timingFunction = CAMediaTimingFunction.mdc_function(withType: materialCurve)
    let animation = CABasicAnimation(keyPath:"transform.scale.xy")
    animation.timingFunction = timingFunction
    animation.fromValue = 1
    animation.toValue = 0
    animation.duration = 0.5
    animation.isRemovedOnCompletion = false
    animation.fillMode = .forwards
    fab.layer.playAnimation({ (layer) -> CAAnimation in
        animation
    }, key: animation.keyPath!)
}

func showFab(){
    let materialCurve = MDCAnimationTimingFunction.deceleration
    let timingFunction = CAMediaTimingFunction.mdc_function(withType: materialCurve)
    let animation = CABasicAnimation(keyPath:"transform.scale.xy")
    animation.timingFunction = timingFunction
    animation.fromValue = 0
    animation.toValue = 1
    animation.duration = 0.5
    animation.isRemovedOnCompletion = false
    animation.fillMode = .forwards
    fab.layer.playAnimation({ (layer) -> CAAnimation in
        animation
    }, key: animation.keyPath!)
}

使用此
让currentScale=fab.layer.presentation()?.value(forKeyPath:“transform.scale.xy”)??0.0
您应该能够获得演示文稿比例值

但我会尝试检查我是否展示了带有标签的晶圆厂:

let hiddenFABTag = 99
let shownFABTag = 100
func hideFAB(){
   if fab.tag == shownFABTag {
     ...
     ...
     fab.tag = hiddenFABTag
   }
}

func showFAB(){
   if fab.tag == hiddenFABTag {
     ...
     ...
     fab.tag = shownFABTag
   }
}
第一次调用它时,无论是在
viewDidLoad()
中还是在其他地方,如果您知道第一次是显示还是隐藏它,您可能希望为它指定一个默认标记值,方法是:

override func viewDidLoad() {
   super.viewDidLoad()
   fab.tag = hiddenFABTag
}