首页 > 其他分享 >HowTo —— SwiftUI2.0 使用ProgressView显示进度条

HowTo —— SwiftUI2.0 使用ProgressView显示进度条

时间:2024-11-14 20:58:26浏览次数:1  
标签:foregroundColor 进度条 HowTo value backgroundColor SwiftUI2.0 100 ProgressView

HowTo —— SwiftUI2.0 使用ProgressView显示进度条

东坡肘子 东坡肘子 知乎知识会员     6 人赞同了该文章
SwiftUI2.0 新增了一些便捷的内置控件,比如说Label、ProgressView等。其基本形态都很普通,不过都支持自定义style。官方的意图也比较明显,通过内置控件,规范代码、提高原型编写速度,如需要更精细控制可通过扩展style来完成。

经典小菊花

ProgressView()

 

线性进度条

ProgressView("完成量", value: 50, total: 100)

 

代码示例

import SwiftUI

struct ProgressTest: View {
    let timer = Timer.publish(every: 0.03, on: .main, in: .common).autoconnect()
    @State var value:Double = 0.0
    var body: some View {
        List{
            //无法定义颜色
            ProgressView()

            //无法隐藏Label
            ProgressView("完成量", value: value, total: 100)
                .accentColor(.red)
            //自定义Style
            ProgressView("工程进度",value: value, total: 100)
                .progressViewStyle(MyProgressViewStyle())
        }
        .onReceive(timer) { _ in
            if value < 100 {
                value += 2
            }
        }
    }
}

//定义方法都大同小异。
struct MyProgressViewStyle:ProgressViewStyle{
    let foregroundColor:Color
    let backgroundColor:Color
    init(foregroundColor:Color = .blue,backgroundColor:Color = .orange){
        self.foregroundColor = foregroundColor
        self.backgroundColor = backgroundColor
    }
    func makeBody(configuration: Configuration) -> some View {
        GeometryReader{ proxy in
            ZStack(alignment:.topLeading){
            backgroundColor
            Rectangle()
                .fill(foregroundColor)
                .frame(width:proxy.size.width * CGFloat(configuration.fractionCompleted ?? 0.0))
            }.clipShape(RoundedRectangle(cornerRadius: 10))
            .overlay(
                    configuration.label
                        .foregroundColor(.white)
            )
        }
    }
}

 

编辑于 2023-10-28 15:25・IP 属地未知

标签:foregroundColor,进度条,HowTo,value,backgroundColor,SwiftUI2.0,100,ProgressView
From: https://www.cnblogs.com/sexintercourse/p/18546810

相关文章

  • HowTo—— Swift2.0在视图中显示地图
    HowTo——Swift2.0在视图中显示地图东坡肘子​ ​关注他 4人赞同了该文章HowTo系列只提供代码和简单的说明,XcodeVersion12.0beta2(12A6163b)Swift2.0中,苹果添加了Map,让开发者可以非常容易的在View中添加需要的地图元素。importSwiftUIimpor......
  • 自定义圆形进度条控件
    以下将以创建一个简单的为例,详细说明在Qt中创建自定义控件的步骤:一、创建项目首先,打开QtCreator并创建一个新的QtWidgetsApplication项目。按照向导完成项目的基本设置,比如项目名称、存储路径等。二、创建自定义控件类继承基础控件类:在项目中创建一个新的C++类,命名为Ci......
  • 多线程 ui 进度条
    usingSystem;usingSystem.Threading;usingSystem.Threading.Tasks;usingSystem.Windows.Forms; namespaceWindowsFormsApp1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbu......
  • 【Linux中的第一个小程序】进度条及printf打印彩色字符
    ......
  • el-progress进度条颜色渐变
    效果图:代码:<el-progressstroke-width="4"type="line":percentage="91.23"class="custom-progress"color="transparent">......
  • Python 进度条模块tqdm
    1.简介在处理大规模数据或长时间运行的任务时,了解任务的进度对于用户体验和调试来说非常重要。tqdm是一个用于显示进度条的Python库,它能将任务的进度信息直观地展示出来。无论是遍历一个大型列表、处理批量数据,还是下载文件,tqdm都能轻松实现进度条显示,并且与Python的标准......
  • 制作游戏加载进度条
    首先,我们需要有一个背景进度条,然后在背景下面添加显示百分比的进度条图片,再创建一个Text,用于显示具体的百分比数字大致结构如下:然后就是通过代码实现这个功能了:[SerializeField]privateImageProcessBar;[SerializeField]privateTextProcessText;privatefloatDefLoa......
  • 【Linux学习】(8)第一个Linux编程进度条程序|git三板斧
    前言第一个Linux编程——进度条git的简单使用一、第一个Linux编程——进度条在写进度条之前我们需要两个基础知识:回车换行缓冲区1.回车换行首先我们需要知道回车换行它是两个概念,回车是回车,换行是换行换行:光标从上往下,直接到下一行(例如光标现在在当前行的第5个......
  • HowToDoInJava-Java-教程-二-
    HowToDoInJavaJava教程(二)原文:HowToDoInJava协议:CCBY-NC-SA4.0JVM内存模型/结构和组件原文:https://howtodoinjava.com/java/garbage-collection/jvm-memory-model-structure-and-components/每当执行Java程序时,都会保留一个单独的存储区,用于存储应用程序代码的各......
  • HowToDoInJava-其它教程-2-二-
    HowToDoInJava其它教程2(二)原文:HowToDoInJava协议:CCBY-NC-SA4.0Java核心面试问题–第2部分原文:https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-2/在Java面试问题系列:第1部分中,我们讨论了面试官通常问的一些重要......