커스텀 폰트 pretendard-regular, gmarket-regular를 사용하고 있던 것을 appFont 모디파이어를 사용하여 한국어는 pretendard, 그 외에는 시스템 폰트를 사용하도록 수정

This commit is contained in:
Yu Sung
2026-01-23 03:25:19 +09:00
parent c9c1db39a6
commit b3331d5512
44 changed files with 166 additions and 150 deletions

View File

@@ -34,7 +34,7 @@ struct CharacterItemView: View {
Spacer() Spacer()
Text("N") Text("N")
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.frame(width: 30, height: 30) .frame(width: 30, height: 30)
.background(Color.button) .background(Color.button)
@@ -57,14 +57,14 @@ struct CharacterItemView: View {
} }
Text(character.name) Text(character.name)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
if let desc = character.description, !desc.isEmpty { if let desc = character.description, !desc.isEmpty {
Text(desc) Text(desc)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
} }

View File

@@ -24,7 +24,7 @@ struct CharacterSectionView: View {
Spacer() Spacer()
if let trailingTitle = trailingTitle { if let trailingTitle = trailingTitle {
Text(trailingTitle) Text(trailingTitle)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "90A4AE")) .foregroundColor(Color(hex: "90A4AE"))
.onTapGesture { onTapTrailing?() } .onTapGesture { onTapTrailing?() }
} }

View File

@@ -205,7 +205,7 @@ extension CharacterDetailView {
HStack(spacing: 4) { HStack(spacing: 4) {
if let gender = viewModel.characterDetail?.gender { if let gender = viewModel.characterDetail?.gender {
Text(viewModel.characterDetail?.translated?.gender ?? gender) Text(viewModel.characterDetail?.translated?.gender ?? gender)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor( .foregroundColor(
gender == "남성" ? gender == "남성" ?
Color.button : Color.button :
@@ -228,7 +228,7 @@ extension CharacterDetailView {
if let age = viewModel.characterDetail?.age { if let age = viewModel.characterDetail?.age {
Text("\(age)") Text("\(age)")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.padding(.horizontal, 7) .padding(.horizontal, 7)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -244,7 +244,7 @@ extension CharacterDetailView {
if let mbti = viewModel.characterDetail?.mbti { if let mbti = viewModel.characterDetail?.mbti {
Text(mbti) Text(mbti)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.padding(.horizontal, 7) .padding(.horizontal, 7)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -271,7 +271,7 @@ extension CharacterDetailView {
if let characterType = viewModel.characterDetail?.characterType { if let characterType = viewModel.characterDetail?.characterType {
HStack(spacing: 8) { HStack(spacing: 8) {
Text(characterType.rawValue) Text(characterType.rawValue)
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 5) .padding(.horizontal, 5)
.padding(.vertical, 1) .padding(.vertical, 1)
@@ -283,11 +283,11 @@ extension CharacterDetailView {
// //
Text(viewModel.characterDetail?.translated?.description ?? viewModel.characterDetail?.description ?? "") Text(viewModel.characterDetail?.translated?.description ?? viewModel.characterDetail?.description ?? "")
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
Text(viewModel.characterDetail?.translated?.tags ?? viewModel.characterDetail?.tags ?? "") Text(viewModel.characterDetail?.translated?.tags ?? viewModel.characterDetail?.tags ?? "")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "3BB9F1")) .foregroundColor(Color(hex: "3BB9F1"))
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
} }
@@ -328,7 +328,7 @@ extension CharacterDetailView {
HStack { HStack {
Text(title) Text(title)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
Spacer() Spacer()
@@ -382,7 +382,7 @@ extension CharacterDetailView {
Text(""" Text("""
보이스온의 오픈월드 캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다. 세계관 속 연관 캐릭터가 되어 대화를 하거나 완전히 새로운 인물이 되어 캐릭터와 당신만의 스토리를 만들어 갈 수 있습니다. 보이스온의 오픈월드 캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다. 세계관 속 연관 캐릭터가 되어 대화를 하거나 완전히 새로운 인물이 되어 캐릭터와 당신만의 스토리를 만들어 갈 수 있습니다.
""") """)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "AEAEB2")) .foregroundColor(Color(hex: "AEAEB2"))
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
@@ -390,7 +390,7 @@ extension CharacterDetailView {
오픈월드 캐릭터톡은 캐릭터를 정교하게 설계하였지만, 대화가 어색하거나 불완전할 수도 있습니다. 오픈월드 캐릭터톡은 캐릭터를 정교하게 설계하였지만, 대화가 어색하거나 불완전할 수도 있습니다.
대화 도중 캐릭터의 대화가 이상하거나 새로운 캐릭터로 대화를 나누고 싶다면 대화를 초기화 하고 새롭게 캐릭터와 대화를 나눠보세요. 대화 도중 캐릭터의 대화가 이상하거나 새로운 캐릭터로 대화를 나누고 싶다면 대화를 초기화 하고 새롭게 캐릭터와 대화를 나눠보세요.
""") """)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "AEAEB2")) .foregroundColor(Color(hex: "AEAEB2"))
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
} }
@@ -443,7 +443,7 @@ struct CharacterExpandableTextView: View {
var body: some View { var body: some View {
VStack(alignment: .leading, spacing: 8) { VStack(alignment: .leading, spacing: 8) {
Text(text) Text(text)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(isExpanded ? nil : 3) .lineLimit(isExpanded ? nil : 3)
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
@@ -469,7 +469,7 @@ struct CharacterExpandableTextView: View {
.rotationEffect(.degrees(isExpanded ? 180 : 0)) .rotationEffect(.degrees(isExpanded ? 180 : 0))
Text(isExpanded ? "간략히" : "더보기") Text(isExpanded ? "간략히" : "더보기")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "607D8B")) .foregroundColor(Color(hex: "607D8B"))
} }
.onTapGesture { .onTapGesture {

View File

@@ -102,15 +102,15 @@ struct CharacterDetailGalleryView: View {
HStack(spacing: 4) { HStack(spacing: 4) {
Text("\(viewModel.ownedCount)") Text("\(viewModel.ownedCount)")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "#FDD453")) .foregroundColor(Color(hex: "#FDD453"))
Text("/") Text("/")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
Text("\(viewModel.totalCount)") Text("\(viewModel.totalCount)")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} }

View File

@@ -24,13 +24,13 @@ struct NewCharacterListView: View {
// n // n
HStack(spacing: 0) { HStack(spacing: 0) {
Text("전체") Text("전체")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(Color(hex: "e2e2e2")) .foregroundColor(Color(hex: "e2e2e2"))
Text(" \(viewModel.totalCount)") Text(" \(viewModel.totalCount)")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(Color(hex: "ff5c49")) .foregroundColor(Color(hex: "ff5c49"))
Text("") Text("")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(Color(hex: "e2e2e2")) .foregroundColor(Color(hex: "e2e2e2"))
Spacer() Spacer()
} }

View File

@@ -20,7 +20,7 @@ struct RecentCharacterItemView: View {
.clipShape(Circle()) .clipShape(Circle())
Text(character.name) Text(character.name)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(1) .lineLimit(1)
.frame(maxWidth: 76) .frame(maxWidth: 76)

View File

@@ -32,7 +32,7 @@ struct OriginalWorkDetailHeaderView: View {
HStack(spacing: 4) { HStack(spacing: 4) {
Text(item.translated?.contentType ?? item.contentType) Text(item.translated?.contentType ?? item.contentType)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.padding(.horizontal, 7) .padding(.horizontal, 7)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -45,7 +45,7 @@ struct OriginalWorkDetailHeaderView: View {
} }
Text(item.translated?.category ?? item.category) Text(item.translated?.category ?? item.category)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.button) .foregroundColor(.button)
.padding(.horizontal, 7) .padding(.horizontal, 7)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -59,7 +59,7 @@ struct OriginalWorkDetailHeaderView: View {
if item.isAdult { if item.isAdult {
Text("19+") Text("19+")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "ff5c49")) .foregroundColor(Color(hex: "ff5c49"))
.padding(.horizontal, 7) .padding(.horizontal, 7)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -79,7 +79,7 @@ struct OriginalWorkDetailHeaderView: View {
.map { $0.hasPrefix("#") ? $0 : "#\($0)" } .map { $0.hasPrefix("#") ? $0 : "#\($0)" }
.joined(separator: " ") .joined(separator: " ")
) )
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "3bb9f1")) .foregroundColor(Color(hex: "3bb9f1"))
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
.padding(.top, 14) .padding(.top, 14)

View File

@@ -161,7 +161,7 @@ struct OriginalWorkInfoView: View {
.foregroundColor(.white) .foregroundColor(.white)
Text(response.translated?.description ?? response.description) Text(response.translated?.description ?? response.description)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(isExpandDesc ? Int.max : 3) .lineLimit(isExpandDesc ? Int.max : 3)
.truncationMode(.tail) .truncationMode(.tail)
@@ -185,7 +185,7 @@ struct OriginalWorkInfoView: View {
let link = response.originalLinks[$0] let link = response.originalLinks[$0]
Text(link) Text(link)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.onTapGesture { .onTapGesture {
if let url = URL(string: link) { if let url = URL(string: link) {
@@ -210,19 +210,19 @@ struct OriginalWorkInfoView: View {
VStack(alignment: .leading, spacing: 8) { VStack(alignment: .leading, spacing: 8) {
if let _ = response.writer { if let _ = response.writer {
Text("작가") Text("작가")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
} }
if let _ = response.studio { if let _ = response.studio {
Text("제작사") Text("제작사")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
} }
if let _ = response.originalWork { if let _ = response.originalWork {
Text("원작") Text("원작")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
} }
} }
@@ -230,19 +230,19 @@ struct OriginalWorkInfoView: View {
VStack(alignment: .leading, spacing: 8) { VStack(alignment: .leading, spacing: 8) {
if let writer = response.writer { if let writer = response.writer {
Text(writer) Text(writer)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
if let studio = response.studio { if let studio = response.studio {
Text(studio) Text(studio)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
if let originalWork = response.originalWork { if let originalWork = response.originalWork {
Text(originalWork) Text(originalWork)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.underline(response.originalLink != nil ? true : false) .underline(response.originalLink != nil ? true : false)
.onTapGesture { .onTapGesture {

View File

@@ -21,13 +21,13 @@ struct OriginalTabItemView: View {
).cornerRadius(16) ).cornerRadius(16)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
Text(item.contentType) Text(item.contentType)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)

View File

@@ -73,7 +73,7 @@ struct ChatRoomView: View {
.frame(width: 20, height: 20) .frame(width: 20, height: 20)
Text("\(can)") Text("\(can)")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
.padding(.horizontal, 10) .padding(.horizontal, 10)
@@ -103,7 +103,7 @@ struct ChatRoomView: View {
? "보이스온 AI캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다.\n세계관 속 캐릭터로 대화를 하거나 새로운 인물로 캐릭터와 당신만의 스토리를 만들어보세요.\n※ AI캐릭터톡은 오픈베타 서비스 중이며, 캐릭터의 대화가 어색하거나 불완전할 수 있습니다." ? "보이스온 AI캐릭터톡은 대화의 자유도가 높아 대화에 참여하는 당신은 누구든 될 수 있습니다.\n세계관 속 캐릭터로 대화를 하거나 새로운 인물로 캐릭터와 당신만의 스토리를 만들어보세요.\n※ AI캐릭터톡은 오픈베타 서비스 중이며, 캐릭터의 대화가 어색하거나 불완전할 수 있습니다."
: "AI Clone은 크리에이터의 정보를 기반으로 대화하지만, 모든 정보를 완벽하게 반영하거나 실제 대화와 일치하지 않을 수 있습니다." : "AI Clone은 크리에이터의 정보를 기반으로 대화하지만, 모든 정보를 완벽하게 반영하거나 실제 대화와 일치하지 않을 수 있습니다."
) )
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
Image(systemName: "chevron.up") Image(systemName: "chevron.up")
@@ -187,12 +187,12 @@ struct ChatRoomView: View {
ZStack(alignment: .leading) { ZStack(alignment: .leading) {
if viewModel.messageText.isEmpty { if viewModel.messageText.isEmpty {
Text("메시지를 입력하세요.") Text("메시지를 입력하세요.")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
} }
TextField("", text: $viewModel.messageText) TextField("", text: $viewModel.messageText)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.onSubmit { .onSubmit {
viewModel.sendMessage() viewModel.sendMessage()

View File

@@ -86,7 +86,7 @@ struct AiMessageItemView: View {
VStack(alignment: .leading, spacing: 4) { VStack(alignment: .leading, spacing: 4) {
HStack(spacing: 4) { HStack(spacing: 4) {
Text(characterName) Text(characterName)
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
@@ -162,7 +162,7 @@ struct AiMessageItemView: View {
// //
VStack { VStack {
Text(formatTime(from: message.createdAt)) Text(formatTime(from: message.createdAt))
.font(.custom(Font.preRegular.rawValue, size: 10)) .appFont(size: 10, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
@@ -185,7 +185,7 @@ struct AiMessageItemView: View {
// //
if !component.isEmpty { if !component.isEmpty {
result = result + Text(component) result = result + Text(component)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} else { } else {
@@ -202,13 +202,13 @@ struct AiMessageItemView: View {
// ( ) // ( )
if !afterClose.isEmpty { if !afterClose.isEmpty {
result = result + Text(afterClose) result = result + Text(afterClose)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} else { } else {
// //
result = result + Text("(\(component)") result = result + Text("(\(component)")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} }

View File

@@ -37,7 +37,7 @@ struct TypingIndicatorItemView: View {
VStack(alignment: .leading, spacing: 4) { VStack(alignment: .leading, spacing: 4) {
HStack(spacing: 4) { HStack(spacing: 4) {
Text(characterName) Text(characterName)
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }

View File

@@ -69,7 +69,7 @@ struct UserMessageItemView: View {
// //
VStack { VStack {
Text(formatTime(from: message.createdAt)) Text(formatTime(from: message.createdAt))
.font(.custom(Font.preRegular.rawValue, size: 10)) .appFont(size: 10, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
@@ -106,7 +106,7 @@ struct UserMessageItemView: View {
// //
if !component.isEmpty { if !component.isEmpty {
result = result + Text(component) result = result + Text(component)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} else { } else {
@@ -123,13 +123,13 @@ struct UserMessageItemView: View {
// ( ) // ( )
if !afterClose.isEmpty { if !afterClose.isEmpty {
result = result + Text(afterClose) result = result + Text(afterClose)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} else { } else {
// //
result = result + Text("(\(component)") result = result + Text("(\(component)")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} }

View File

@@ -98,7 +98,7 @@ struct ChatBgSelectionView: View {
if selectedBgImageId == item.id { if selectedBgImageId == item.id {
Text("현재 배경") Text("현재 배경")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 6) .padding(.horizontal, 6)
.padding(.vertical, 2) .padding(.vertical, 2)

View File

@@ -67,11 +67,11 @@ struct ChatSettingsView: View {
HStack(alignment: .top, spacing: 0) { HStack(alignment: .top, spacing: 0) {
Text("⚠️ ") Text("⚠️ ")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white.opacity(0.7)) .foregroundColor(.white.opacity(0.7))
Text("지금까지의 대화가 모두 초기화 되고, 이용자가 새로운 캐릭터가 되어 새롭게 대화를 시작합니다.") Text("지금까지의 대화가 모두 초기화 되고, 이용자가 새로운 캐릭터가 되어 새롭게 대화를 시작합니다.")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white.opacity(0.7)) .foregroundColor(.white.opacity(0.7))
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
} }

View File

@@ -29,7 +29,7 @@ struct TalkItemView: View {
.lineLimit(1) .lineLimit(1)
Text(item.opponentType) Text(item.opponentType)
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(Color(hex: "D9FCF4")) .foregroundColor(Color(hex: "D9FCF4"))
.lineLimit(1) .lineLimit(1)
.padding(.horizontal, 5) .padding(.horizontal, 5)
@@ -40,14 +40,14 @@ struct TalkItemView: View {
Spacer() Spacer()
Text(item.lastMessageTimeLabel) Text(item.lastMessageTimeLabel)
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
} }
if let message = item.lastMessagePreview { if let message = item.lastMessagePreview {
Text(message) Text(message)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "b0bec5")) .foregroundColor(Color(hex: "b0bec5"))
.lineLimit(2) .lineLimit(2)
.truncationMode(.tail) .truncationMode(.tail)

View File

@@ -15,7 +15,7 @@ struct TalkView: View {
BaseView(isLoading: $viewModel.isLoading) { BaseView(isLoading: $viewModel.isLoading) {
if viewModel.talkRooms.isEmpty { if viewModel.talkRooms.isEmpty {
Text("대화 중인 톡이 없습니다") Text("대화 중인 톡이 없습니다")
.font(.custom(Font.preRegular.rawValue, size: 20)) .appFont(size: 20, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} else { } else {
ScrollView(.vertical, showsIndicators: false) { ScrollView(.vertical, showsIndicators: false) {

View File

@@ -101,7 +101,7 @@ struct ContentAllView: View {
} }
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
@@ -111,7 +111,7 @@ struct ContentAllView: View {
Text(item.creatorNickname) Text(item.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
.padding(.horizontal, 6) .padding(.horizontal, 6)

View File

@@ -37,7 +37,7 @@ struct ContentItemView: View {
} }
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
@@ -47,7 +47,7 @@ struct ContentItemView: View {
Text(item.creatorNickname) Text(item.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
.padding(.horizontal, 6) .padding(.horizontal, 6)

View File

@@ -52,7 +52,7 @@ struct DayOfWeekSeriesView: View {
Spacer() Spacer()
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.init(hex: "78909C")) .foregroundColor(.init(hex: "78909C"))
.onTapGesture { .onTapGesture {
AppState.shared AppState.shared

View File

@@ -30,7 +30,7 @@ struct SeriesMainHomeView: View {
Spacer() Spacer()
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.init(hex: "78909C")) .foregroundColor(.init(hex: "78909C"))
.onTapGesture { .onTapGesture {
AppState.shared AppState.shared

View File

@@ -28,7 +28,7 @@ struct SeriesMainItemView: View {
HStack(spacing: 0) { HStack(spacing: 0) {
if item.isPopular { if item.isPopular {
Text("인기") Text("인기")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -38,7 +38,7 @@ struct SeriesMainItemView: View {
if item.isNew { if item.isNew {
Text("신작") Text("신작")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -57,7 +57,7 @@ struct SeriesMainItemView: View {
if item.isComplete { if item.isComplete {
Text("완결") Text("완결")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -72,7 +72,7 @@ struct SeriesMainItemView: View {
Spacer() Spacer()
Text("\(item.numberOfContent)") Text("\(item.numberOfContent)")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -89,14 +89,14 @@ struct SeriesMainItemView: View {
.frame(width: width, height: height, alignment: .center) .frame(width: width, height: height, alignment: .center)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(1) .lineLimit(1)
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
.padding(.horizontal, 8) .padding(.horizontal, 8)
Text(item.creator.nickname) Text(item.creator.nickname)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
.padding(.horizontal, 8) .padding(.horizontal, 8)

View File

@@ -28,7 +28,7 @@ struct SeriesItemView: View {
HStack(spacing: 0) { HStack(spacing: 0) {
if item.isPopular { if item.isPopular {
Text("인기") Text("인기")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -38,7 +38,7 @@ struct SeriesItemView: View {
if item.isNew { if item.isNew {
Text("신작") Text("신작")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -57,7 +57,7 @@ struct SeriesItemView: View {
if item.isComplete { if item.isComplete {
Text("완결") Text("완결")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -72,7 +72,7 @@ struct SeriesItemView: View {
Spacer() Spacer()
Text("\(item.numberOfContent)") Text("\(item.numberOfContent)")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 10) .padding(.horizontal, 10)
.padding(.vertical, 3) .padding(.vertical, 3)
@@ -89,13 +89,13 @@ struct SeriesItemView: View {
.frame(width: 160, height: 227, alignment: .center) .frame(width: 160, height: 227, alignment: .center)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(1) .lineLimit(1)
.padding(.horizontal, 8) .padding(.horizontal, 8)
Text(item.creator.nickname) Text(item.creator.nickname)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
.padding(.horizontal, 8) .padding(.horizontal, 8)

View File

@@ -21,7 +21,7 @@ struct ExpandableTextView: View {
VStack(alignment: .leading) { VStack(alignment: .leading) {
Text(text) Text(text)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color.gray77) .foregroundColor(Color.gray77)
.lineLimit(isExpanded ? nil : 3) // , 3 .lineLimit(isExpanded ? nil : 3) // , 3
.truncationMode(.tail) .truncationMode(.tail)

View File

@@ -27,7 +27,7 @@ struct CreatorCommunityItemView: View {
.foregroundColor(Color.white) .foregroundColor(Color.white)
Text(item.relativeTimeText()) Text(item.relativeTimeText())
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
} }
@@ -36,7 +36,7 @@ struct CreatorCommunityItemView: View {
HStack(spacing: 0) { HStack(spacing: 0) {
Text(item.content) Text(item.content)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
.lineLimit(3) .lineLimit(3)
@@ -65,7 +65,7 @@ struct CreatorCommunityItemView: View {
.frame(width: 24, height: 24) .frame(width: 24, height: 24)
Text("\(item.likeCount)") Text("\(item.likeCount)")
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
} }
@@ -75,7 +75,7 @@ struct CreatorCommunityItemView: View {
.frame(width: 24, height: 24) .frame(width: 24, height: 24)
Text("\(item.commentCount)") Text("\(item.commentCount)")
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
} }
} }

View File

@@ -81,15 +81,15 @@ struct UserProfileContentView: View {
HStack(spacing: 4) { HStack(spacing: 4) {
Text("\(ownedContentCount)") Text("\(ownedContentCount)")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "#FDD453")) .foregroundColor(Color(hex: "#FDD453"))
Text("/") Text("/")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
Text("\(totalContentCount)") Text("\(totalContentCount)")
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} }

View File

@@ -44,29 +44,29 @@ struct UserProfileLiveView: View {
VStack(alignment: .leading, spacing: 8) { VStack(alignment: .leading, spacing: 8) {
Text(item.managerNickname) Text(item.managerNickname)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
HStack(spacing: 4) { HStack(spacing: 4) {
Text("\(dateDic["dayOfWeek"] ?? "")") Text("\(dateDic["dayOfWeek"] ?? "")")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
Text("|") Text("|")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
let time = dateDic["time"] ?? "" let time = dateDic["time"] ?? ""
Text("\(item.isActive && !item.channelName.isNullOrBlank() ? "On Air" : time)") Text("\(item.isActive && !item.channelName.isNullOrBlank() ? "On Air" : time)")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "98A2F6")) .foregroundColor(Color(hex: "98A2F6"))
} }
} }
@@ -117,7 +117,7 @@ struct UserProfileLiveView: View {
.frame(width: 12) .frame(width: 12)
Text("\(item.price)") Text("\(item.price)")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
.padding(4) .padding(4)
@@ -126,7 +126,7 @@ struct UserProfileLiveView: View {
.cornerRadius(4) .cornerRadius(4)
} else { } else {
Text("무료") Text("무료")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "#263238")) .foregroundColor(Color(hex: "#263238"))
.padding(4) .padding(4)
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)

View File

@@ -7,29 +7,36 @@
import SwiftUI import SwiftUI
private func resolvedLanguageCode(currentLocale: Locale) -> String? {
if let raw = UserDefaults.standard.string(forKey: "app.language"),
let option = LanguageOption(rawValue: raw),
option != .system {
return option.rawValue
}
return currentLocale.language.languageCode?.identifier
}
private func appFontName(for weight: SwiftUI.Font.Weight) -> String {
switch weight {
case .bold:
return "Pretendard-Bold"
case .medium:
return "Pretendard-Medium"
case .light:
return "Pretendard-Light"
default:
return "Pretendard-Regular"
}
}
struct KoreanFontModifier: ViewModifier { struct KoreanFontModifier: ViewModifier {
@Environment(\.locale) private var locale @Environment(\.locale) private var locale
let size: CGFloat let size: CGFloat
let weight: SwiftUI.Font.Weight let weight: SwiftUI.Font.Weight
private func resolvedLanguageCode() -> String? {
if let raw = UserDefaults.standard.string(forKey: "app.language"),
let option = LanguageOption(rawValue: raw),
option != .system {
return option.rawValue
}
return locale.language.languageCode?.identifier
}
func body(content: Content) -> some View { func body(content: Content) -> some View {
if resolvedLanguageCode() == "ko" { if resolvedLanguageCode(currentLocale: locale) == "ko" {
let name: String = switch weight { content.font(.custom(appFontName(for: weight), size: size))
case .bold: "Pretendard-Bold"
case .medium: "Pretendard-Medium"
case .light: "Pretendard-Light"
default: "Pretendard-Regular"
}
content.font(.custom(name, size: size))
} else { } else {
content.font(.system(size: size, weight: weight)) content.font(.system(size: size, weight: weight))
} }
@@ -41,3 +48,12 @@ extension View {
self.modifier(KoreanFontModifier(size: size, weight: weight)) self.modifier(KoreanFontModifier(size: size, weight: weight))
} }
} }
extension Text {
func appFont(size: CGFloat, weight: SwiftUI.Font.Weight = .regular) -> Text {
if resolvedLanguageCode(currentLocale: .autoupdatingCurrent) == "ko" {
return self.font(.custom(appFontName(for: weight), size: size))
}
return self.font(.system(size: size, weight: weight))
}
}

View File

@@ -39,14 +39,14 @@ struct HomeCreatorRankingItemView: View {
Spacer() Spacer()
Text(item.nickname) Text(item.nickname)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
Spacer() Spacer()
if item.id != UserDefaults.int(forKey: .userId) { if item.id != UserDefaults.int(forKey: .userId) {
Text(item.follow ? "팔로잉" : "팔로우") Text(item.follow ? "팔로잉" : "팔로우")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.padding(.vertical, 4) .padding(.vertical, 4)
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)
.background( .background(

View File

@@ -30,7 +30,7 @@ struct HomeLatestContentView: View {
Spacer() Spacer()
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.init(hex: "78909C")) .foregroundColor(.init(hex: "78909C"))
.onTapGesture { onClickMore() } .onTapGesture { onClickMore() }
} }

View File

@@ -37,13 +37,13 @@ struct HomeLiveItemView: View {
VStack(alignment: .leading, spacing: 4) { VStack(alignment: .leading, spacing: 4) {
Text(item.creatorNickname) Text(item.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(2) .lineLimit(2)
.truncationMode(.tail) .truncationMode(.tail)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)

View File

@@ -195,7 +195,7 @@ struct HomeTabView: View {
Spacer() Spacer()
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.init(hex: "78909C")) .foregroundColor(.init(hex: "78909C"))
.onTapGesture { .onTapGesture {
AppState.shared AppState.shared
@@ -283,7 +283,7 @@ struct HomeTabView: View {
Spacer() Spacer()
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.init(hex: "78909C")) .foregroundColor(.init(hex: "78909C"))
.onTapGesture { .onTapGesture {
AppState.shared AppState.shared
@@ -313,7 +313,7 @@ struct HomeTabView: View {
Spacer() Spacer()
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.init(hex: "78909C")) .foregroundColor(.init(hex: "78909C"))
.onTapGesture { .onTapGesture {
AppState.shared AppState.shared
@@ -388,7 +388,7 @@ struct HomeTabView: View {
- 대표 이메일 : sodalive.official@gmail.com - 대표 이메일 : sodalive.official@gmail.com
""") """)
.font(.custom(Font.preRegular.rawValue, size: 11)) .appFont(size: 11, weight: .regular)
.foregroundColor(Color.gray77) .foregroundColor(Color.gray77)
.padding(.horizontal, 13.3) .padding(.horizontal, 13.3)
} }
@@ -519,7 +519,7 @@ struct HomeTabView: View {
Text(viewModel.errorMessage) Text(viewModel.errorMessage)
.padding(.vertical, 13.3) .padding(.vertical, 13.3)
.frame(width: screenSize().width - 66.7, alignment: .center) .frame(width: screenSize().width - 66.7, alignment: .center)
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.background(Color.button) .background(Color.button)
.foregroundColor(Color.white) .foregroundColor(Color.white)
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)

View File

@@ -30,11 +30,11 @@ struct HomeWeeklyChartItemView: View {
VStack(alignment: .leading, spacing: 6) { VStack(alignment: .leading, spacing: 6) {
Text(content.title) Text(content.title)
.lineLimit(1) .lineLimit(1)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
Text(content.creatorNickname) Text(content.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
} }
} }

View File

@@ -24,7 +24,7 @@ struct RecommendChannelContentItemView: View {
VStack(alignment: .leading, spacing: 2) { VStack(alignment: .leading, spacing: 2) {
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
@@ -34,7 +34,7 @@ struct RecommendChannelContentItemView: View {
Image("ic_heart_white") Image("ic_heart_white")
Text("\(item.likeCount)") Text("\(item.likeCount)")
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
@@ -42,7 +42,7 @@ struct RecommendChannelContentItemView: View {
Image("ic_comment_white") Image("ic_comment_white")
Text("\(item.commentCount)") Text("\(item.commentCount)")
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
} }

View File

@@ -30,7 +30,7 @@ struct RecommendChannelItemView: View {
HStack(spacing: 4) { HStack(spacing: 4) {
Text("콘텐츠") Text("콘텐츠")
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
Text("\(item.contentCount)") Text("\(item.contentCount)")

View File

@@ -22,14 +22,14 @@ struct LatestFinishedLiveItemView: View {
.clipShape(Circle()) .clipShape(Circle())
Text(item.nickname) Text(item.nickname)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.top, 20) .padding(.top, 20)
Spacer() Spacer()
Text(item.relativeTimeText()) Text(item.relativeTimeText())
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
} }
.padding(16) .padding(16)

View File

@@ -48,12 +48,12 @@ struct LiveNowItemView: View {
Spacer() Spacer()
Text(item.creatorNickname) Text(item.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.padding(.horizontal, 2) .padding(.horizontal, 2)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(Color(hex: "#B0BEC5")) .foregroundColor(Color(hex: "#B0BEC5"))
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
@@ -70,7 +70,7 @@ struct LiveNowItemView: View {
.frame(width: 16) .frame(width: 16)
Text("\(item.price)") Text("\(item.price)")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
.padding(.vertical, 4) .padding(.vertical, 4)
@@ -81,7 +81,7 @@ struct LiveNowItemView: View {
.padding(.bottom, 2) .padding(.bottom, 2)
} else { } else {
Text("무료") Text("무료")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "#263238")) .foregroundColor(Color(hex: "#263238"))
.padding(.vertical, 4) .padding(.vertical, 4)
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)

View File

@@ -28,7 +28,7 @@ struct SectionLiveNowView: View {
if items.count > 0 { if items.count > 0 {
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.onTapGesture { AppState.shared.setAppStep(step: .liveNowAll(onClickParticipant: onClickParticipant)) } .onTapGesture { AppState.shared.setAppStep(step: .liveNowAll(onClickParticipant: onClickParticipant)) }
} }

View File

@@ -88,7 +88,7 @@ struct SectionRecommendChannelView: View {
.frame(width: screenSize().width * 0.18, height: screenSize().width * 0.18, alignment: .center) .frame(width: screenSize().width * 0.18, height: screenSize().width * 0.18, alignment: .center)
Text("더보기") Text("더보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.frame(width: screenSize().width * 0.18) .frame(width: screenSize().width * 0.18)
.lineLimit(1) .lineLimit(1)

View File

@@ -37,28 +37,28 @@ struct LiveReservationItemView: View {
VStack(alignment: .leading, spacing: 8) { VStack(alignment: .leading, spacing: 8) {
Text(item.creatorNickname) Text(item.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
HStack(spacing: 4) { HStack(spacing: 4) {
Text("\(dateDic["dayOfWeek"] ?? "")") Text("\(dateDic["dayOfWeek"] ?? "")")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
Text("|") Text("|")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
Text("\(dateDic["time"] ?? "")") Text("\(dateDic["time"] ?? "")")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "98A2F6")) .foregroundColor(Color(hex: "98A2F6"))
} }
} }
@@ -92,7 +92,7 @@ struct LiveReservationItemView: View {
.frame(width: 12) .frame(width: 12)
Text("\(item.price)") Text("\(item.price)")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
.padding(4) .padding(4)
@@ -101,7 +101,7 @@ struct LiveReservationItemView: View {
.cornerRadius(4) .cornerRadius(4)
} else { } else {
Text("무료") Text("무료")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "#263238")) .foregroundColor(Color(hex: "#263238"))
.padding(4) .padding(4)
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)

View File

@@ -49,28 +49,28 @@ struct MyLiveReservationItemView: View {
VStack(alignment: .leading, spacing: 8) { VStack(alignment: .leading, spacing: 8) {
Text(item.creatorNickname) Text(item.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
Text(item.title) Text(item.title)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color(hex: "B0BEC5")) .foregroundColor(Color(hex: "B0BEC5"))
.lineLimit(1) .lineLimit(1)
.truncationMode(.tail) .truncationMode(.tail)
HStack(spacing: 0) { HStack(spacing: 0) {
Text("\(dateDic["dayOfWeek"] ?? "")") Text("\(dateDic["dayOfWeek"] ?? "")")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
Text("|") Text("|")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
Text("\(dateDic["time"] ?? "")") Text("\(dateDic["time"] ?? "")")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "98A2F6")) .foregroundColor(Color(hex: "98A2F6"))
} }
} }
@@ -104,7 +104,7 @@ struct MyLiveReservationItemView: View {
.frame(width: 12) .frame(width: 12)
Text("\(item.price)") Text("\(item.price)")
.font(.custom(Font.preRegular.rawValue, size: 12)) .appFont(size: 12, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
.padding(4) .padding(4)
@@ -113,7 +113,7 @@ struct MyLiveReservationItemView: View {
.cornerRadius(4) .cornerRadius(4)
} else { } else {
Text("무료") Text("무료")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "#263238")) .foregroundColor(Color(hex: "#263238"))
.padding(4) .padding(4)
.frame(maxWidth: .infinity) .frame(maxWidth: .infinity)

View File

@@ -28,7 +28,7 @@ struct SectionLiveReservationView: View {
if items.count > 0 { if items.count > 0 {
Text("전체보기") Text("전체보기")
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.onTapGesture { .onTapGesture {
if !token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty { if !token.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {

View File

@@ -465,7 +465,7 @@ struct CategoryButtonItem: View {
} }
Text(title) Text(title)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
} }
.onTapGesture { .onTapGesture {
@@ -518,7 +518,7 @@ struct RecentItemView: View {
.cornerRadius(16) .cornerRadius(16)
Text(content.title) Text(content.title)
.font(.custom(Font.preRegular.rawValue, size: 18)) .appFont(size: 18, weight: .regular)
.foregroundColor(.white) .foregroundColor(.white)
.multilineTextAlignment(.leading) .multilineTextAlignment(.leading)
.fixedSize(horizontal: false, vertical: true) .fixedSize(horizontal: false, vertical: true)
@@ -528,7 +528,7 @@ struct RecentItemView: View {
Text(content.creatorNickname) Text(content.creatorNickname)
.font(.custom(Font.preRegular.rawValue, size: 14)) .appFont(size: 14, weight: .regular)
.foregroundColor(Color(hex: "78909C")) .foregroundColor(Color(hex: "78909C"))
.lineLimit(1) .lineLimit(1)
.padding(.horizontal, 6) .padding(.horizontal, 6)

View File

@@ -27,7 +27,7 @@ struct LanguageSettingsView: View {
ForEach(Array(LanguageOption.allCases.enumerated()), id: \.offset) { idx, option in ForEach(Array(LanguageOption.allCases.enumerated()), id: \.offset) { idx, option in
HStack(spacing: 0) { HStack(spacing: 0) {
Text(option.displayName) Text(option.displayName)
.font(.custom(Font.preRegular.rawValue, size: 16)) .appFont(size: 16, weight: .regular)
.foregroundColor(Color.grayee) .foregroundColor(Color.grayee)
Spacer() Spacer()
if viewModel.pending == option { if viewModel.pending == option {