不同进度不同颜色的进度条,其中一个不显示是啥情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不同进度不同颜色的进度条,其中一个不显示是啥情况相关的知识,希望对你有一定的参考价值。

参考技术A 未开始。不同颜色的进度条代表的含义不同,一个颜色代表一个意思,或者某种工作的开始,其中一个不显示了就是还未开始的原因,遇到此情况耐心等待即可。

拆分不同颜色的自定义 UIView

【中文标题】拆分不同颜色的自定义 UIView【英文标题】:Split a custom UIView in different colors 【发布时间】:2021-06-14 15:15:51 【问题描述】:

我从情节提要制作了这个阶梯式进度条,并通过传递字符串数组(每个字符串添加一个步骤,因此标签和图标)以编程方式配置步骤数(最多 8 个)。

白色视图是基础视图,绿色视图是进度条,当然是 UIView。

要为进度设置动画,我只需设置进度条的宽度限制(我可以为指定步骤的百分比设置动画)。

现在,我的目标是将每个步骤的进度条分成不同的颜色:

例如,“Primo”步骤可以是蓝色,第二个步骤是红色等等,每个步骤都有不同的颜色。

我敢打赌我应该为进度条子类化 UIView,并在 draw 方法中发挥作用,但我的目标是将一系列步骤 (UIStackView) 传递给进度条并使用 setColor(forStep:1, color : .blue) 给定指定步骤的 frame.width。

你能帮帮我吗?

最佳。

【问题讨论】:

【参考方案1】:

您可以在UIView.layer 中添加图层,如下所示 -

class CustomProgress: UIView 
    var layersCache: [Int: CALayer] = [:]
    
    func setColor(forStep step: Int, color: UIColor) 
        let stepLayer: CALayer
        if let layer = layersCache[step] 
            stepLayer = layer
         else 
            stepLayer = CALayer()
            layersCache[step] = stepLayer
        
        
        let size = self.bounds.size
        let stepWidth = size.width / 8 /// totalSteps
        stepLayer.frame = CGRect(x: CGFloat(step) * stepWidth, y: 0, width: stepWidth, height: size.height)
        
        stepLayer.backgroundColor = color.cgColor
        self.layer.insertSublayer(stepLayer, at: 0)
    

【讨论】:

感谢您的回复 :) 最好在 customProgress.setColor 上说“从现在开始在帧宽度的这个位置设置这个颜色”作为参数传递 UIStackView(步骤本身)。用代码绘图很糟糕,哈哈

以上是关于不同进度不同颜色的进度条,其中一个不显示是啥情况的主要内容,如果未能解决你的问题,请参考以下文章

excel如何设置根据百分比进度自动改变颜色?

拆分不同颜色的自定义 UIView

Qt编写自定义控件14-环形进度条

shell脚本实现转圈、进度条等效果

golang进度条

delphi xe android 更改ProgressBar1进度条颜色