我遇到了UIProgressView的问题(使用Xcode 11.5和当前的Swift版本)。我的目标是创建一个进度条,该进度条具有增加的高度(相对于Apple标准高度)和圆角,可以平滑地表示播放的音频文件的进度。
我可以通过将界面生成器中的高度约束与以下代码结合起来,轻松实现所需的外观:
audioProgress.layer.cornerRadius = bubble.frame.size.height / 3
audioProgress.clipsToBounds = true
但是,我遇到的问题是进度条从一开始就没有平滑地开始-而是跳到大约1/3的条上(根据设备大小而变化)并停在那里,直到音频“捕获”为止向上”,从该位置继续平稳运行直至结束。
我确保这不是我的代码中的错误,例如音频文件,计时器等,而是一些布局问题。例如。一旦将条形的高度更改回苹果的标准高度,进度就会显示出来。
我可以通过使用以下代码来增加钢筋的高度(而不是约束)来避免这种奇怪的行为:
let transform: CGAffineTransform = CGAffineTransform(scaleX: 1.0, y: transformFactor)
audioProgress.transform = transform
但是,这不再允许我如上图所示对角进行圆角处理,因为layer.cornerRadius和CGAffineTransform命令的组合会导致出现奇怪的拐角,如其他文章中所示。
所以我的两个问题是:
谁能解释一下造成这种奇怪的行为的原因,因为这种行为最初会使杠铃跳跃和停止一会儿吗?以及如何避免呢?
如果仅使用CGAffineTransform命令,是否还有其他方法可以实现圆角?例如。 ……沿着“先改变高度,然后再绕过拐角”的方式(与相反的方式相反,据我所知,这会导致外观偏斜...)
尝试一下-
audioProgress?.layer.cornerRadius = bubble.frame.size.height / 3
audioProgress?.layer.masksToBounds = true