首页 > 解决方案 > 增加高度和圆角后,UIProgressView 无法顺利运行的问题

问题描述

我遇到了 UIProgressView 的问题(使用 Xcode 11.5 和当前的 Swift 版本)。我的目标是创建一个高度增加(相对于 Apple 标准高度)和圆角的进度条,它代表了播放音频文件的进度。

预期的进度条样式

通过将界面生成器中的高度约束与以下代码相结合,我可以轻松实现所需的外观:

audioProgress.layer.cornerRadius = bubble.frame.size.height / 3
audioProgress.clipsToBounds = true

但是,我遇到的问题是进度条从一开始就没有顺畅地开始——而是跳到进度条的大约 1/3 处(根据设备大小而变化)并停在那里,直到音频“赶上”在那个位置上,它从那里继续平稳运行直到结束。

我确保这不是我的代码重新音频文件、计时器等中的错误,而是一些布局问题。例如,一旦我将栏的高度更改回 Apple 的标准高度,进度就会显示出来。

我可以通过使用下面的代码来增加栏的高度(而不是约束)来避免这种奇怪的行为:

let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.0, y: transformFactor)
audioProgress.transform = transform

但是,这不再允许我如上所示圆角,因为 layer.cornerRadius 和 CGAffineTransform 命令的组合会导致奇怪的倾斜角,如其他帖子所示。

所以我的两个问题是:

  1. 谁能解释一下是什么导致了这种奇怪的酒吧跳动和停止一段时间的行为?以及如何避免?

  2. 如果使用 CGAffineTransform 命令是唯一的方法——还有其他方法可以实现圆角吗?例如,沿着“首先改变高度,然后才绕过角落”的路线(而不是反过来做,在我看来,这会导致歪斜的外观......)

标签: swiftuiprogressview

解决方案


尝试这个 -

    audioProgress?.layer.cornerRadius = bubble.frame.size.height / 3
    audioProgress?.layer.masksToBounds = true

推荐阅读