커스텀 폰트 pretendard-regular, gmarket-regular를 사용하고 있던 것을 appFont 모디파이어를 사용하여 한국어는 pretendard, 그 외에는 시스템 폰트를 사용하도록 수정
This commit is contained in:
@@ -34,7 +34,7 @@ struct CharacterItemView: View {
|
||||
Spacer()
|
||||
|
||||
Text("N")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.frame(width: 30, height: 30)
|
||||
.background(Color.button)
|
||||
@@ -57,14 +57,14 @@ struct CharacterItemView: View {
|
||||
}
|
||||
|
||||
Text(character.name)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
|
||||
if let desc = character.description, !desc.isEmpty {
|
||||
Text(desc)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "78909C"))
|
||||
.lineLimit(1)
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ struct CharacterSectionView: View {
|
||||
Spacer()
|
||||
if let trailingTitle = trailingTitle {
|
||||
Text(trailingTitle)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "90A4AE"))
|
||||
.onTapGesture { onTapTrailing?() }
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ extension CharacterDetailView {
|
||||
HStack(spacing: 4) {
|
||||
if let gender = viewModel.characterDetail?.gender {
|
||||
Text(viewModel.characterDetail?.translated?.gender ?? gender)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(
|
||||
gender == "남성" ?
|
||||
Color.button :
|
||||
@@ -228,7 +228,7 @@ extension CharacterDetailView {
|
||||
|
||||
if let age = viewModel.characterDetail?.age {
|
||||
Text("\(age)세")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
.padding(.horizontal, 7)
|
||||
.padding(.vertical, 3)
|
||||
@@ -244,7 +244,7 @@ extension CharacterDetailView {
|
||||
|
||||
if let mbti = viewModel.characterDetail?.mbti {
|
||||
Text(mbti)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
.padding(.horizontal, 7)
|
||||
.padding(.vertical, 3)
|
||||
@@ -271,7 +271,7 @@ extension CharacterDetailView {
|
||||
if let characterType = viewModel.characterDetail?.characterType {
|
||||
HStack(spacing: 8) {
|
||||
Text(characterType.rawValue)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 5)
|
||||
.padding(.vertical, 1)
|
||||
@@ -283,11 +283,11 @@ extension CharacterDetailView {
|
||||
|
||||
// 설명
|
||||
Text(viewModel.characterDetail?.translated?.description ?? viewModel.characterDetail?.description ?? "")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
Text(viewModel.characterDetail?.translated?.tags ?? viewModel.characterDetail?.tags ?? "")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "3BB9F1"))
|
||||
.multilineTextAlignment(.leading)
|
||||
}
|
||||
@@ -328,7 +328,7 @@ extension CharacterDetailView {
|
||||
|
||||
HStack {
|
||||
Text(title)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
|
||||
Spacer()
|
||||
@@ -382,7 +382,7 @@ extension CharacterDetailView {
|
||||
Text("""
|
||||
보이스온의 오픈월드 캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다. 세계관 속 연관 캐릭터가 되어 대화를 하거나 완전히 새로운 인물이 되어 캐릭터와 당신만의 스토리를 만들어 갈 수 있습니다.
|
||||
""")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(Color(hex: "AEAEB2"))
|
||||
.multilineTextAlignment(.leading)
|
||||
|
||||
@@ -390,7 +390,7 @@ extension CharacterDetailView {
|
||||
오픈월드 캐릭터톡은 캐릭터를 정교하게 설계하였지만, 대화가 어색하거나 불완전할 수도 있습니다.
|
||||
대화 도중 캐릭터의 대화가 이상하거나 새로운 캐릭터로 대화를 나누고 싶다면 대화를 초기화 하고 새롭게 캐릭터와 대화를 나눠보세요.
|
||||
""")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(Color(hex: "AEAEB2"))
|
||||
.multilineTextAlignment(.leading)
|
||||
}
|
||||
@@ -443,7 +443,7 @@ struct CharacterExpandableTextView: View {
|
||||
var body: some View {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
Text(text)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
.lineLimit(isExpanded ? nil : 3)
|
||||
.multilineTextAlignment(.leading)
|
||||
@@ -469,7 +469,7 @@ struct CharacterExpandableTextView: View {
|
||||
.rotationEffect(.degrees(isExpanded ? 180 : 0))
|
||||
|
||||
Text(isExpanded ? "간략히" : "더보기")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(Color(hex: "607D8B"))
|
||||
}
|
||||
.onTapGesture {
|
||||
|
||||
@@ -102,15 +102,15 @@ struct CharacterDetailGalleryView: View {
|
||||
|
||||
HStack(spacing: 4) {
|
||||
Text("\(viewModel.ownedCount)")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(Color(hex: "#FDD453"))
|
||||
|
||||
Text("/")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text("\(viewModel.totalCount)개")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,13 +24,13 @@ struct NewCharacterListView: View {
|
||||
// 전체 n개
|
||||
HStack(spacing: 0) {
|
||||
Text("전체")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(Color(hex: "e2e2e2"))
|
||||
Text(" \(viewModel.totalCount)")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(Color(hex: "ff5c49"))
|
||||
Text("개")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(Color(hex: "e2e2e2"))
|
||||
Spacer()
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ struct RecentCharacterItemView: View {
|
||||
.clipShape(Circle())
|
||||
|
||||
Text(character.name)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.frame(maxWidth: 76)
|
||||
|
||||
@@ -32,7 +32,7 @@ struct OriginalWorkDetailHeaderView: View {
|
||||
|
||||
HStack(spacing: 4) {
|
||||
Text(item.translated?.contentType ?? item.contentType)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
.padding(.horizontal, 7)
|
||||
.padding(.vertical, 3)
|
||||
@@ -45,7 +45,7 @@ struct OriginalWorkDetailHeaderView: View {
|
||||
}
|
||||
|
||||
Text(item.translated?.category ?? item.category)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.button)
|
||||
.padding(.horizontal, 7)
|
||||
.padding(.vertical, 3)
|
||||
@@ -59,7 +59,7 @@ struct OriginalWorkDetailHeaderView: View {
|
||||
|
||||
if item.isAdult {
|
||||
Text("19+")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "ff5c49"))
|
||||
.padding(.horizontal, 7)
|
||||
.padding(.vertical, 3)
|
||||
@@ -79,7 +79,7 @@ struct OriginalWorkDetailHeaderView: View {
|
||||
.map { $0.hasPrefix("#") ? $0 : "#\($0)" }
|
||||
.joined(separator: " ")
|
||||
)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "3bb9f1"))
|
||||
.frame(maxWidth: .infinity)
|
||||
.padding(.top, 14)
|
||||
|
||||
@@ -161,7 +161,7 @@ struct OriginalWorkInfoView: View {
|
||||
.foregroundColor(.white)
|
||||
|
||||
Text(response.translated?.description ?? response.description)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
.lineLimit(isExpandDesc ? Int.max : 3)
|
||||
.truncationMode(.tail)
|
||||
@@ -185,7 +185,7 @@ struct OriginalWorkInfoView: View {
|
||||
let link = response.originalLinks[$0]
|
||||
|
||||
Text(link)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.onTapGesture {
|
||||
if let url = URL(string: link) {
|
||||
@@ -210,19 +210,19 @@ struct OriginalWorkInfoView: View {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
if let _ = response.writer {
|
||||
Text("작가")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
}
|
||||
|
||||
if let _ = response.studio {
|
||||
Text("제작사")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
}
|
||||
|
||||
if let _ = response.originalWork {
|
||||
Text("원작")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "B0BEC5"))
|
||||
}
|
||||
}
|
||||
@@ -230,19 +230,19 @@ struct OriginalWorkInfoView: View {
|
||||
VStack(alignment: .leading, spacing: 8) {
|
||||
if let writer = response.writer {
|
||||
Text(writer)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
if let studio = response.studio {
|
||||
Text(studio)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
if let originalWork = response.originalWork {
|
||||
Text(originalWork)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.underline(response.originalLink != nil ? true : false)
|
||||
.onTapGesture {
|
||||
|
||||
@@ -21,13 +21,13 @@ struct OriginalTabItemView: View {
|
||||
).cornerRadius(16)
|
||||
|
||||
Text(item.title)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 18))
|
||||
.appFont(size: 18, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
|
||||
Text(item.contentType)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "78909C"))
|
||||
.lineLimit(1)
|
||||
.truncationMode(.tail)
|
||||
|
||||
@@ -73,7 +73,7 @@ struct ChatRoomView: View {
|
||||
.frame(width: 20, height: 20)
|
||||
|
||||
Text("\(can)")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
.padding(.horizontal, 10)
|
||||
@@ -103,7 +103,7 @@ struct ChatRoomView: View {
|
||||
? "보이스온 AI캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다.\n세계관 속 캐릭터로 대화를 하거나 새로운 인물로 캐릭터와 당신만의 스토리를 만들어보세요.\n※ AI캐릭터톡은 오픈베타 서비스 중이며, 캐릭터의 대화가 어색하거나 불완전할 수 있습니다."
|
||||
: "AI Clone은 크리에이터의 정보를 기반으로 대화하지만, 모든 정보를 완벽하게 반영하거나 실제 대화와 일치하지 않을 수 있습니다."
|
||||
)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
|
||||
Image(systemName: "chevron.up")
|
||||
@@ -187,12 +187,12 @@ struct ChatRoomView: View {
|
||||
ZStack(alignment: .leading) {
|
||||
if viewModel.messageText.isEmpty {
|
||||
Text("메시지를 입력하세요.")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "78909C"))
|
||||
}
|
||||
|
||||
TextField("", text: $viewModel.messageText)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.onSubmit {
|
||||
viewModel.sendMessage()
|
||||
|
||||
@@ -86,7 +86,7 @@ struct AiMessageItemView: View {
|
||||
VStack(alignment: .leading, spacing: 4) {
|
||||
HStack(spacing: 4) {
|
||||
Text(characterName)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ struct AiMessageItemView: View {
|
||||
// 시간 표시
|
||||
VStack {
|
||||
Text(formatTime(from: message.createdAt))
|
||||
.font(.custom(Font.preRegular.rawValue, size: 10))
|
||||
.appFont(size: 10, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
@@ -185,7 +185,7 @@ struct AiMessageItemView: View {
|
||||
// 첫 번째 컴포넌트는 항상 일반 텍스트
|
||||
if !component.isEmpty {
|
||||
result = result + Text(component)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
} else {
|
||||
@@ -202,13 +202,13 @@ struct AiMessageItemView: View {
|
||||
// 소괄호 뒤의 텍스트 (일반 스타일)
|
||||
if !afterClose.isEmpty {
|
||||
result = result + Text(afterClose)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
} else {
|
||||
// 닫는 괄호가 없으면 일반 텍스트로 처리
|
||||
result = result + Text("(\(component)")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +37,7 @@ struct TypingIndicatorItemView: View {
|
||||
VStack(alignment: .leading, spacing: 4) {
|
||||
HStack(spacing: 4) {
|
||||
Text(characterName)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ struct UserMessageItemView: View {
|
||||
// 시간 표시
|
||||
VStack {
|
||||
Text(formatTime(from: message.createdAt))
|
||||
.font(.custom(Font.preRegular.rawValue, size: 10))
|
||||
.appFont(size: 10, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
|
||||
@@ -106,7 +106,7 @@ struct UserMessageItemView: View {
|
||||
// 첫 번째 컴포넌트는 항상 일반 텍스트
|
||||
if !component.isEmpty {
|
||||
result = result + Text(component)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
} else {
|
||||
@@ -123,13 +123,13 @@ struct UserMessageItemView: View {
|
||||
// 소괄호 뒤의 텍스트 (일반 스타일)
|
||||
if !afterClose.isEmpty {
|
||||
result = result + Text(afterClose)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
} else {
|
||||
// 닫는 괄호가 없으면 일반 텍스트로 처리
|
||||
result = result + Text("(\(component)")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ struct ChatBgSelectionView: View {
|
||||
|
||||
if selectedBgImageId == item.id {
|
||||
Text("현재 배경")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
.padding(.horizontal, 6)
|
||||
.padding(.vertical, 2)
|
||||
|
||||
@@ -67,11 +67,11 @@ struct ChatSettingsView: View {
|
||||
|
||||
HStack(alignment: .top, spacing: 0) {
|
||||
Text("⚠️ ")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white.opacity(0.7))
|
||||
|
||||
Text("지금까지의 대화가 모두 초기화 되고, 이용자가 새로운 캐릭터가 되어 새롭게 대화를 시작합니다.")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 16))
|
||||
.appFont(size: 16, weight: .regular)
|
||||
.foregroundColor(.white.opacity(0.7))
|
||||
.fixedSize(horizontal: false, vertical: true)
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ struct TalkItemView: View {
|
||||
.lineLimit(1)
|
||||
|
||||
Text(item.opponentType)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(Color(hex: "D9FCF4"))
|
||||
.lineLimit(1)
|
||||
.padding(.horizontal, 5)
|
||||
@@ -40,14 +40,14 @@ struct TalkItemView: View {
|
||||
Spacer()
|
||||
|
||||
Text(item.lastMessageTimeLabel)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 12))
|
||||
.appFont(size: 12, weight: .regular)
|
||||
.foregroundColor(Color(hex: "78909C"))
|
||||
.lineLimit(1)
|
||||
}
|
||||
|
||||
if let message = item.lastMessagePreview {
|
||||
Text(message)
|
||||
.font(.custom(Font.preRegular.rawValue, size: 14))
|
||||
.appFont(size: 14, weight: .regular)
|
||||
.foregroundColor(Color(hex: "b0bec5"))
|
||||
.lineLimit(2)
|
||||
.truncationMode(.tail)
|
||||
|
||||
@@ -15,7 +15,7 @@ struct TalkView: View {
|
||||
BaseView(isLoading: $viewModel.isLoading) {
|
||||
if viewModel.talkRooms.isEmpty {
|
||||
Text("대화 중인 톡이 없습니다")
|
||||
.font(.custom(Font.preRegular.rawValue, size: 20))
|
||||
.appFont(size: 20, weight: .regular)
|
||||
.foregroundColor(.white)
|
||||
} else {
|
||||
ScrollView(.vertical, showsIndicators: false) {
|
||||
|
||||
Reference in New Issue
Block a user