ios - 如何动画进度 View ?

标签 ios swift xcode bar-chart

我正在使用https://github.com/gordoneliel/LinearProgressBar 。我想将其制作成动画。

这是实现绘图方法的部分代码:

    func drawProgressView() {
    guard let context = UIGraphicsGetCurrentContext() else {return}

    let beginPoint = CGPoint(x: barPadding + trackOffset, y: frame.size.height / 2)


    // Progress Bar Track
    drawOn(
        context: context,
        lineWidth: barThickness + trackPadding,
        begin: beginPoint,
        end: CGPoint(x: frame.size.width - barPadding - trackOffset, y: frame.size.height / 2),
        lineCap: .round,
        strokeColor: trackColor
    )

    // Progress bar
    let colorForBar = barColorForValue?(Float(progressValue)) ?? barColor

    drawOn(
        context: context,
        lineWidth: barThickness,
        begin: beginPoint,
        end: CGPoint(x: barPadding + trackOffset + calculatePercentage(), y: frame.size.height / 2),
        lineCap: .round,
        strokeColor: colorForBar
    )
}

这里可以添加动画吗?

我找到了如何将其添加到进度 View :self.progressView.setProgress(1.0,animated:true)。但我想将其添加到 https://github.com/gordoneliel/LinearProgressBar .

最佳答案

由于您正在处理图层,因此您可以尝试 CATransaction。

您可以将图层重绘包含在这样的动画 block 中

UIView.transition(with: myView, duration: 1, options: .transitionCrossDissolve, animations: {
myView.layer.displayIfNeeded()
})

或者尝试将您的drawOn 封装在CATransaction 事务中,如下所示

CATransaction.begin()
CATransaction.setAnimationDuration(0.25)
drawOn(
    context: context,
    lineWidth: barThickness,
    begin: beginPoint,
    end: CGPoint(x: barPadding + trackOffset + calculatePercentage(), y: frame.size.height / 2),
    lineCap: .round,
    strokeColor: colorForBar
)
CATransaction.commit()

希望这有帮助。

关于ios - 如何动画进度 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51760172/

相关文章:

xcode - 如何使用自动布局 beta 7 UIKIT 修复 xcode 11 中可滚动内容大小的歧义

ios - 你如何截取 ARKit 相机 View ?

ios - 从 applicationwillresignactive 中调用函数

swift - Swift中的链表声明,手指类型可以透明地插入中间或开始

ios - 在 swift 中实现 GTScrollNavigationBar

iphone - xcode:如何在使用 AVFoundation 录制音频后保存音频文件

ios - 动态更改表格 View 单元格的高度

ios - Swift 中的内存管理 : memory don't released after NSOperation ends

ios - iPad 视频尺寸/格式

ios - 以编程方式开始在另一个 TableView 单元格中编辑 UITextField