feat: 新增用户ID显示组件和头像样式优化

- 创建UserIDDisplay组件,支持ID显示和复制功能,增强用户交互体验。
- 更新MeView中的头像样式,调整尺寸和边框,提升视觉效果。
- 修改OptimizedDynamicCardView以使用新组件,确保一致性和复用性。
- 新增icon_copy图标资源,支持复制功能的视觉反馈。
- 更新AppSettingView中的布局,优化用户界面体验。
This commit is contained in:
edwinQQQ
2025-08-01 15:53:56 +08:00
parent 12dd03d5b3
commit 57ba103996
8 changed files with 165 additions and 36 deletions

View File

@@ -0,0 +1,68 @@
import SwiftUI
struct UserIDDisplay: View {
let uid: Int
let fontSize: CGFloat
let textColor: Color
@State private var showCopiedFeedback: Bool = false
init(uid: Int, fontSize: CGFloat = 14, textColor: Color = .white.opacity(0.7)) {
self.uid = uid
self.fontSize = fontSize
self.textColor = textColor
}
var body: some View {
HStack(spacing: 4) {
Text("ID: \(String(uid))")
.font(.system(size: fontSize))
.foregroundColor(textColor)
Image("icon_copy")
.resizable()
.frame(width: 14, height: 14)
.foregroundColor(textColor)
}
.onTapGesture {
copyToClipboard()
}
.overlay(
Group {
if showCopiedFeedback {
Text("已复制")
.font(.system(size: 12))
.foregroundColor(.white)
.padding(.horizontal, 8)
.padding(.vertical, 4)
.background(Color.black.opacity(0.7))
.cornerRadius(4)
.offset(y: -30)
.transition(.opacity)
}
}
)
}
private func copyToClipboard() {
UIPasteboard.general.string = String(uid)
withAnimation(.easeInOut(duration: 0.2)) {
showCopiedFeedback = true
}
DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
withAnimation(.easeInOut(duration: 0.2)) {
showCopiedFeedback = false
}
}
}
}
#Preview {
VStack(spacing: 20) {
UserIDDisplay(uid: 123456789)
UserIDDisplay(uid: 987654321, fontSize: 16, textColor: .black)
}
.padding()
}