SwiftUI實現(xiàn)圓環(huán)進度條

效果圖
RingView.png
//
//  ContentView.swift
//  SwiftUIDemo
//
//  Created by Haoyu on 2021/10/15.
//

import SwiftUI

struct RingView: View {
    var width: CGFloat = 200
    var percent: CGFloat = 90
    var color1 = #colorLiteral(red: 0.2078431487, green: 0.56745098062, blue: 0.5333333433, alpha: 1)
    var color2 = #colorLiteral(red: 0.6078431487, green: 0.06745098062, blue: 0.5333333433, alpha: 1)
    
    var body: some View {
        let mutiplier = width / 44
        let progress = 1 - percent / 100
        
        return ZStack {
            Circle()
                .stroke(Color.black.opacity(0.1),
                        style: StrokeStyle(lineWidth: 5 * mutiplier))
                .frame(width: width, height: width)
            
            Circle()
                .trim(from: progress, to: 1)
                .stroke(
                    LinearGradient(gradient: Gradient(colors: [Color(color1), Color(color2)]), startPoint: .topLeading, endPoint: .bottomTrailing),
                    style: StrokeStyle(lineWidth: 5 * mutiplier, lineCap: .round, lineJoin: .round)
            )
                .rotationEffect(Angle(degrees: 90))
                .rotation3DEffect(Angle(degrees: 180), axis: (x: 1, y: 0, z: 0))
                .frame(width: width, height: width)
                .shadow(color: Color(color1).opacity(0.1), radius: 3, x: 0, y: 3)
            
            Text("\(Int(percent))%")
                .font(.system(size: 14 * mutiplier))
                .fontWeight(.bold)
        }
    }
}

struct RingView_Previews: PreviewProvider {
    static var previews: some View {
        RingView()
    }
}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猪瞬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秽荤,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機边器,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來托修,“玉大人忘巧,你說我怎么就攤上這事∧廊校” “怎么了砚嘴?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長涩拙。 經(jīng)常有香客問我际长,道長,這世上最難降的妖魔是什么兴泥? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任工育,我火速辦了婚禮,結果婚禮上搓彻,老公的妹妹穿的比我還像新娘如绸。我一直安慰自己,他們只是感情好好唯,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布竭沫。 她就那樣靜靜地躺著,像睡著了一般骑篙。 火紅的嫁衣襯著肌膚如雪蜕提。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天靶端,我揣著相機與錄音谎势,去河邊找鬼。 笑死杨名,一個胖子當著我的面吹牛脏榆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播台谍,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼须喂,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起坞生,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤仔役,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后是己,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體又兵,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年卒废,在試婚紗的時候發(fā)現(xiàn)自己被綠了沛厨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡摔认,死狀恐怖逆皮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情级野,我是刑警寧澤页屠,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站蓖柔,受9級特大地震影響辰企,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜况鸣,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一牢贸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧镐捧,春花似錦潜索、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至列牺,卻和暖如春整陌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瞎领。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工泌辫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人九默。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓震放,卻偏偏與公主長得像,于是被迫代替她去往敵國和親驼修。 傳聞我的和親對象是個殘疾皇子殿遂,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容