增加高度时如何平滑进度条的拐角?

Posted

技术标签:

【中文标题】增加高度时如何平滑进度条的拐角?【英文标题】:How to smoothly round the corners of a progress bar when the height is increased? 【发布时间】:2018-01-26 18:08:38 【问题描述】:

我正在尝试制作这样的进度条:

我使用这个 SO 帖子来学习如何圆角:Link

当您的进度条高度不超过 6 时效果很好。当我使用以下方法使进度条变大时:

        progressBar.transform = progressBar.transform.scaledBy(x: 1, y: 8)

结果吧:

圆角半径值设置为多少无关紧要,它不是圆的。我知道使拐角半径值大于高度可能会导致直线拐角,但我将拐角半径设置为什么并不重要(我可以将其设置为 1/2/4 并获得类似的结果),角落不会圆。

这是我的代码:

 progressBar.transform = progressBar.transform.scaledBy(x: 1, y: 8)
 progressBar.layer.cornerRadius = 8
 progressBar.clipsToBounds = true
 progressBar.layer.sublayers![1].cornerRadius = 8
 progressBar.subviews[1].clipsToBounds = true

(圆角半径和y值相同,因为y乘以2)

【问题讨论】:

【参考方案1】:

我在写这篇文章时想通了。你像我在上面的帖子中那样使用圆角半径:

progressBar.layer.cornerRadius = 8
progressBar.clipsToBounds = true
progressBar.layer.sublayers![1].cornerRadius = 8
progressBar.subviews[1].clipsToBounds = true

要增加大小,您可以在进度条上设置高度限制:

【讨论】:

以上是关于增加高度时如何平滑进度条的拐角?的主要内容,如果未能解决你的问题,请参考以下文章

如何给progressbar圆形进度条设置颜色

vc6.0里MFC进度条如何使用

关于VB.NET进度条的实例

关于VB.NET进度条的实例

winform导出数据时怎么加进度条?或者弹出一个窗口“正正在导出...”多少条记录!如何实现?

如何删除进度条的验证以保存功能