DFSingleStressFaceView.swift
2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//
// DFSingleStressFaceView.swift
// hippo-watch-extension
//
import SwiftUI
struct DFSingleStressFaceView: View {
let entry: DFWatchFaceEntry
var body: some View {
GeometryReader { proxy in
let scale = min(proxy.size.width / 172, proxy.size.height / 74)
HStack(spacing: 10 * scale) {
DFStatusOrb(status: entry.data.myStatus, value: entry.data.hasData ? "\(entry.data.hrvValue)" : "--")
.frame(width: 54 * scale, height: 54 * scale)
VStack(alignment: .leading, spacing: 5 * scale) {
HStack {
Text("HRV")
.font(.system(size: 10 * scale, weight: .medium))
.foregroundStyle(.white.opacity(0.62))
Spacer()
Text(entry.date, style: .time)
.font(.system(size: 10 * scale, weight: .medium))
.foregroundStyle(.white)
}
Text(entry.data.hasData ? "\(entry.data.myStatus.title) · \(entry.data.hrvValue)ms" : "等待数据")
.font(.system(size: 14 * scale, weight: .semibold))
.foregroundStyle(entry.data.hasData ? entry.data.myStatus.color : DFWatchFaceColor.grayText)
.lineLimit(1)
.minimumScaleFactor(0.7)
DFSegmentBar(selected: entry.data.hasData ? entry.data.myStatus : nil)
.frame(height: 9 * scale)
Text(entry.data.hasData ? entry.data.hrvTime : "--:--")
.font(.system(size: 10 * scale, weight: .medium))
.foregroundStyle(.white.opacity(0.82))
}
}
.padding(.horizontal, 8)
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(
LinearGradient(
colors: [entry.data.myStatus.color.opacity(0.28), .clear],
startPoint: .leading,
endPoint: .trailing
)
)
}
}
}