【问题标题】:Issue with UIProgressView not running smoothly once height is increased and corners are rounded增加高度和圆角后,UIProgressView 无法顺利运行的问题
【发布时间】:2020-05-30 17:59:48
【问题描述】:

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

intended progress bar style

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

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 命令是唯一可行的方法 - 是否有其他方法可以实现圆角?例如。沿着“首先改变高度,然后才绕过角落”的思路(而不是反过来做,据我了解,这会导致外观倾斜......)

【问题讨论】:

    标签: swift uiprogressview


    【解决方案1】:

    试试这个 -

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

    【讨论】:

    • 感谢您的建议!不幸的是,同样的问题仍然存在......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多