캐릭터 탭 - 섹션 사이 간격 48
채팅 캐릭터 이미지 비율 2:3으로 변경 채팅 배경 사진 -> 채팅 배경 이미지로 단어 변경
This commit is contained in:
@@ -13,7 +13,7 @@ struct CharacterSectionView: View {
|
|||||||
var onTap: (Character) -> Void = { _ in }
|
var onTap: (Character) -> Void = { _ in }
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(alignment: .leading, spacing: 12) {
|
VStack(alignment: .leading, spacing: 16) {
|
||||||
Text(title)
|
Text(title)
|
||||||
.font(.custom(Font.preBold.rawValue, size: 20))
|
.font(.custom(Font.preBold.rawValue, size: 20))
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ struct CharacterView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
BaseView(isLoading: $viewModel.isLoading) {
|
BaseView(isLoading: $viewModel.isLoading) {
|
||||||
ScrollView(.vertical, showsIndicators: false) {
|
ScrollView(.vertical, showsIndicators: false) {
|
||||||
VStack(alignment: .leading, spacing: 24) {
|
VStack(alignment: .leading, spacing: 48) {
|
||||||
// 배너
|
// 배너
|
||||||
if !viewModel.banners.isEmpty {
|
if !viewModel.banners.isEmpty {
|
||||||
AutoSlideCharacterBannerView(items: viewModel.banners) { banner in
|
AutoSlideCharacterBannerView(items: viewModel.banners) { banner in
|
||||||
@@ -45,7 +45,7 @@ struct CharacterView: View {
|
|||||||
|
|
||||||
// 큐레이션 섹션 (여러 섹션)
|
// 큐레이션 섹션 (여러 섹션)
|
||||||
if !viewModel.curations.isEmpty {
|
if !viewModel.curations.isEmpty {
|
||||||
VStack(alignment: .leading, spacing: 24) {
|
VStack(alignment: .leading, spacing: 48) {
|
||||||
ForEach(viewModel.curations.indices, id: \.self) { idx in
|
ForEach(viewModel.curations.indices, id: \.self) { idx in
|
||||||
let section = viewModel.curations[idx]
|
let section = viewModel.curations[idx]
|
||||||
CharacterSectionView(
|
CharacterSectionView(
|
||||||
@@ -58,7 +58,7 @@ struct CharacterView: View {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding(.vertical, 24)
|
.padding(.bottom, 24)
|
||||||
}
|
}
|
||||||
.background(Color.black.ignoresSafeArea())
|
.background(Color.black.ignoresSafeArea())
|
||||||
.onAppear {
|
.onAppear {
|
||||||
|
|||||||
@@ -13,14 +13,16 @@ struct RecentCharacterSectionView: View {
|
|||||||
var onTap: (RecentCharacter) -> Void = { _ in }
|
var onTap: (RecentCharacter) -> Void = { _ in }
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(alignment: .leading, spacing: 12) {
|
VStack(alignment: .leading, spacing: 16) {
|
||||||
HStack(spacing: 0) {
|
HStack(spacing: 0) {
|
||||||
Text("최근 대화한 캐릭터 ")
|
Text("최근 대화한 캐릭터 ")
|
||||||
.font(.custom(Font.preBold.rawValue, size: 20))
|
.font(.custom(Font.preBold.rawValue, size: 20))
|
||||||
.foregroundColor(.white)
|
.foregroundColor(.white)
|
||||||
|
|
||||||
Text("\(titleCount)")
|
Text("\(titleCount)")
|
||||||
.font(.custom(Font.preBold.rawValue, size: 20))
|
.font(.custom(Font.preBold.rawValue, size: 20))
|
||||||
.foregroundColor(Color(hex: "FDCA2F"))
|
.foregroundColor(Color(hex: "FDCA2F"))
|
||||||
|
|
||||||
Spacer()
|
Spacer()
|
||||||
}
|
}
|
||||||
.padding(.horizontal, 24)
|
.padding(.horizontal, 24)
|
||||||
|
|||||||
@@ -334,7 +334,7 @@ struct ChatRoomBgView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
GeometryReader { geo in
|
GeometryReader { geo in
|
||||||
let width = geo.size.width
|
let width = geo.size.width
|
||||||
let height = width * 5 / 4
|
let height = width * 3 / 2
|
||||||
|
|
||||||
ZStack {
|
ZStack {
|
||||||
if let url = url {
|
if let url = url {
|
||||||
@@ -353,7 +353,7 @@ struct ChatRoomBgView: View {
|
|||||||
.frame(width: width, height: height)
|
.frame(width: width, height: height)
|
||||||
.clipped()
|
.clipped()
|
||||||
}
|
}
|
||||||
.aspectRatio(4/5, contentMode: .fit)
|
.aspectRatio(2/3, contentMode: .fit)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ struct ChatBgSelectionView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
BaseView(isLoading: $viewModel.isLoading) {
|
BaseView(isLoading: $viewModel.isLoading) {
|
||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
DetailNavigationBar(title: "배경 사진 선택") {
|
DetailNavigationBar(title: "배경 이미지 선택") {
|
||||||
isShowing = false
|
isShowing = false
|
||||||
}
|
}
|
||||||
// 갤러리 그리드
|
// 갤러리 그리드
|
||||||
@@ -73,7 +73,7 @@ struct ChatBgSelectionView: View {
|
|||||||
private func galleryImageView(item: CharacterImageListItemResponse) -> some View {
|
private func galleryImageView(item: CharacterImageListItemResponse) -> some View {
|
||||||
GeometryReader { geo in
|
GeometryReader { geo in
|
||||||
let width = geo.size.width
|
let width = geo.size.width
|
||||||
let height = width * 5 / 4
|
let height = width * 3 / 2
|
||||||
|
|
||||||
ZStack(alignment: .bottomTrailing) {
|
ZStack(alignment: .bottomTrailing) {
|
||||||
// 이미지
|
// 이미지
|
||||||
@@ -110,7 +110,7 @@ struct ChatBgSelectionView: View {
|
|||||||
.contentShape(Rectangle())
|
.contentShape(Rectangle())
|
||||||
.onTapGesture { onTapBgImage(item) }
|
.onTapGesture { onTapBgImage(item) }
|
||||||
}
|
}
|
||||||
.aspectRatio(4/5, contentMode: .fit)
|
.aspectRatio(2/3, contentMode: .fit)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ struct ChatSettingsView: View {
|
|||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
Toggle(isOn: $isHideBg) {
|
Toggle(isOn: $isHideBg) {
|
||||||
Text("배경 이미지 숨김")
|
Text("배경 이미지 끄기")
|
||||||
.font(.custom(Font.preBold.rawValue, size: 18))
|
.font(.custom(Font.preBold.rawValue, size: 18))
|
||||||
.foregroundColor(Color(hex: "B0BEC5"))
|
.foregroundColor(Color(hex: "B0BEC5"))
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user