136 lines
5.0 KiB
Swift
136 lines
5.0 KiB
Swift
import SwiftUI
|
|
|
|
struct UserProfileModal: View {
|
|
@Binding var showModal: Bool
|
|
@Binding var showSettings: Bool
|
|
|
|
var body: some View {
|
|
// Modal content with transparent background
|
|
VStack(spacing: 20) {
|
|
Spacer()
|
|
.frame(height: UIApplication.shared.windows.first?.safeAreaInsets.top ?? 0)
|
|
// 用户信息区域
|
|
HStack(alignment: .center, spacing: 16) {
|
|
// 头像
|
|
Image(systemName: "person.circle.fill")
|
|
.resizable()
|
|
.aspectRatio(contentMode: .fill)
|
|
.frame(width: 60, height: 60)
|
|
.foregroundColor(.blue)
|
|
.clipShape(Circle())
|
|
|
|
// 姓名和ID
|
|
VStack(alignment: .leading, spacing: 4) {
|
|
Text("用户名")
|
|
.font(.headline)
|
|
.foregroundColor(.primary)
|
|
|
|
Text("ID: 12345678")
|
|
.font(.subheadline)
|
|
.foregroundColor(.secondary)
|
|
}
|
|
|
|
Spacer()
|
|
}
|
|
.padding(.horizontal, 16)
|
|
.padding(.top, 16)
|
|
|
|
VStack(alignment: .leading, spacing: 8) {
|
|
Text("会员等级")
|
|
.font(.headline)
|
|
.foregroundColor(.primary)
|
|
Text("会员时间")
|
|
.font(.subheadline)
|
|
.foregroundColor(.secondary)
|
|
Text("会员中心")
|
|
.font(.subheadline)
|
|
.foregroundColor(.secondary)
|
|
}
|
|
.frame(maxWidth: .infinity, alignment: .leading)
|
|
.padding(16)
|
|
.background(Color.clear)
|
|
.padding(.horizontal, 16)
|
|
|
|
VStack(spacing: 12) {
|
|
// memories
|
|
Button(action: {
|
|
print("memories")
|
|
}) {
|
|
HStack(spacing: 16) {
|
|
Image(systemName: "crown.fill")
|
|
.foregroundColor(.orange)
|
|
.frame(width: 24, height: 24)
|
|
|
|
Text("My Memories")
|
|
.font(.headline)
|
|
.foregroundColor(.primary)
|
|
|
|
Spacer()
|
|
}
|
|
.padding()
|
|
.cornerRadius(10)
|
|
.contentShape(Rectangle()) // 使整个区域可点击
|
|
}
|
|
.buttonStyle(PlainButtonStyle()) // 移除按钮默认样式
|
|
|
|
// Box
|
|
Button(action: {
|
|
print("Box")
|
|
}) {
|
|
HStack(spacing: 16) {
|
|
Image(systemName: "clock.fill")
|
|
.foregroundColor(.blue)
|
|
.frame(width: 24, height: 24)
|
|
Text("My Bind Box")
|
|
.font(.headline)
|
|
.foregroundColor(.primary)
|
|
|
|
Spacer()
|
|
}
|
|
.padding()
|
|
.cornerRadius(10)
|
|
.contentShape(Rectangle()) // 使整个区域可点击
|
|
}
|
|
.buttonStyle(PlainButtonStyle()) // 移除按钮默认样式
|
|
|
|
// setting
|
|
Button(action: {
|
|
withAnimation(.spring(response: 0.5, dampingFraction: 0.8)) {
|
|
showSettings = true
|
|
}
|
|
}) {
|
|
HStack(spacing: 16) {
|
|
Image(systemName: "person.circle.fill")
|
|
.foregroundColor(.purple)
|
|
.frame(width: 24, height: 24)
|
|
Text("Setting")
|
|
.font(.headline)
|
|
.foregroundColor(.primary)
|
|
Spacer()
|
|
Image(systemName: "chevron.right")
|
|
.foregroundColor(.gray)
|
|
}
|
|
.padding()
|
|
.background(Color.clear)
|
|
.overlay(
|
|
RoundedRectangle(cornerRadius: 10)
|
|
.stroke(Color.gray.opacity(0.2), lineWidth: 1)
|
|
)
|
|
.contentShape(Rectangle()) // 使整个区域可点击
|
|
}
|
|
.buttonStyle(PlainButtonStyle()) // 移除按钮默认样式
|
|
}
|
|
.padding(.horizontal, 16)
|
|
Spacer()
|
|
}
|
|
.frame(width: UIScreen.main.bounds.width * 0.8)
|
|
.background(Color(red: 0.87, green: 0.87, blue: 0.87))
|
|
.cornerRadius(20, corners: [.topRight, .bottomRight])
|
|
.edgesIgnoringSafeArea(.all)
|
|
}
|
|
}
|
|
|
|
#Preview {
|
|
UserProfileModal(showModal: .constant(true), showSettings: .constant(false))
|
|
}
|