gpt4 book ai didi

iOS Todays 小部件扩展 - 动画 UISlider

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:38 25 4
gpt4 key购买 nike

我正在 iOS 中创建今天的扩展。我想要做的是在今天的扩展中添加 UISlider 的动画值变化。动画应该从开始值到结束值进行。

我尝试了两种方式:第一个 UIView 动画

func updateSliderView(beginState:Float, duration: NSTimeInterval) {
sliderView.hidden = false
sliderView.setValue(beginState, animated: false)
UIView.animateWithDuration(duration) { () -> Void in
self.sliderView.setValue(1, animated: true)
}
}

其次是基本动画。

func updateSliderView(beginState:Float, duration: NSTimeInterval) {
sliderView.hidden = false
guard let _ = sliderView.layer.animationForKey("slider.animation.value") else {
let animation = CABasicAnimation(keyPath: "value")
animation.fromValue = beginState
animation.toValue = 1
animation.removedOnCompletion = true
sliderView.layer.addAnimation(animation, forKey: "slider.animation.value")
return
}
}

我正在使用新的 XCode 7.0.1 和 iOS 目标 8.1两个结果都没有动画。 UISlider 禁用了用户交互。我正在使用 UISluder,因为我有用于 slider 路径最小和最大轨道以及 slider 拇指的自定义图形。

我做了第三次测试

sliderView.setValue(beginState, animated: false)
CATransaction.begin()
CATransaction.setAnimationDuration(duration)
sliderView.setValue(1, animated: true)
CATransaction.commit()

它不会工作:/

总结:只有 UIView.animation 有效。它是动画但它打破了我的 UISlider 自定义图形并且它没有设置 slider 的起始值。

如何为 Todays 扩展中的 UISlider 值变化设置动画?

最佳答案

好的,我解决了。我回答我自己的问题,因为它可能会对某些人有所帮助,而这正是我所要求的解决方案。

Todays Extension 中只有 UIView.animation 为 UISlider 设置动画。但是设置起始值在动画之前不起作用,并且动画破坏了 slider 上的自定义图形。当您在 UIView.animation block 中设置起始值时,我发现它会按我想要的方式工作。

UIView.animateWithDuration(0.2, delay: 0, options: .CurveLinear, animations: { () -> Void in
self.sliderView.setValue(beginState, animated: true)
}) { (completed) -> Void in
UIView.animateWithDuration(duration, delay: 0.1, options: .CurveLinear, animations: { () -> Void in
self.sliderView.setValue(1, animated: true)
}, completion: nil)
}

我组合了两个 UIView 动画 block 。结果和我之前预想的一样。起始值已设置。 UISlider 值从起始值动画到结束。所有自定义图形(如最小值、最大值和拇指)均已正确呈现。

关于iOS Todays 小部件扩展 - 动画 UISlider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32860643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com