iOS Todays 小部件扩展 - 动画 UISlider
Posted
技术标签:
【中文标题】iOS Todays 小部件扩展 - 动画 UISlider【英文标题】:iOS Todays Widget Extension - Animate UISlider 【发布时间】:2015-09-30 07:47:29 【问题描述】:我正在 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
我正在使用带有 iOS 目标 8.1 的新 XCode 7.0.1 在两个结果中都没有动画。 UISlider 已禁用用户交互。 我正在使用 UISluder,因为我有自定义图形用于滑块路径最小和最大轨道以及滑块拇指。
我做了第三次测试
sliderView.setValue(beginState, animated: false)
CATransaction.begin()
CATransaction.setAnimationDuration(duration)
sliderView.setValue(1, animated: true)
CATransaction.commit()
它不会工作:/
总结:只有 UIView.animation 有效。它是动画,但它打破了我对 UISlider 的自定义图形,它没有设置滑块的起始值。
如何在 Todays 扩展中为 UISlider 值变化设置动画?
【问题讨论】:
滑块没有设置值动画方法吗?你试过了吗? 我确实对动画使用了 corect 方法正如您在第一个代码示例中看到的,动画:true,它不会为它设置动画:( 这就是我在这里的原因 【参考方案1】:好的,我解决了。 我回答我自己的问题,因为它可能会对某人有所帮助,而这正是我所要求的解决方案。
只有 UIView.animation 在 Todays Extension 中为 UISlider 设置动画。但是在动画之前设置起始值不起作用,并且动画破坏了滑块上的自定义图形。 当您在 UIView.animation 块中设置起始值时,我发现一切都会按我的意愿工作。
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 动画块。结果和我之前预料的一样。 设定了起始值。 UISlider 值从起始值动画到结束。所有自定义图形(例如最小值、最大值和拇指)均已正确渲染。
【讨论】:
以上是关于iOS Todays 小部件扩展 - 动画 UISlider的主要内容,如果未能解决你的问题,请参考以下文章
如何消除 ios8 Todays Extension 中的领先差距