크리에이터 커뮤니티 등록 UI 추가

This commit is contained in:
Yu Sung 2023-12-16 01:56:59 +09:00
parent a7f8fa5dc5
commit e2e64fa4e6
7 changed files with 209 additions and 2 deletions

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "ic_logo2.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -113,4 +113,6 @@ enum AppStep {
case contentRankingAll
case creatorCommunityAll(creatorId: Int)
case creatorCommunityWrite
}

View File

@ -522,11 +522,11 @@ struct SelectButtonView: View {
Text(title)
.font(.custom(Font.bold.rawValue, size: 14.7))
.foregroundColor(isChecked ? .white : Color(hex: "9970ff"))
.foregroundColor(isChecked ? .white : Color(hex: "80D8FF"))
}
.frame(height: 48.7)
.frame(maxWidth: .infinity)
.background(isChecked ? Color(hex: "9970ff") : Color(hex: "1f1734"))
.background(isChecked ? Color(hex: "3BB9F1") : Color(hex: "13181B"))
.cornerRadius(6.7)
.onTapGesture {
hideKeyboard()

View File

@ -166,6 +166,9 @@ struct ContentView: View {
case .creatorCommunityAll(let creatorId):
CreatorCommunityAllView(creatorId: creatorId)
case .creatorCommunityWrite:
CreatorCommunityWriteView()
default:
EmptyView()
.frame(width: 0, height: 0, alignment: .topLeading)

View File

@ -0,0 +1,178 @@
//
// CreatorCommunityWriteView.swift
// SodaLive
//
// Created by klaus on 2023/12/15.
//
import SwiftUI
struct CreatorCommunityWriteView: View {
@StateObject var keyboardHandler = KeyboardHandler()
var body: some View {
BaseView {
GeometryReader { proxy in
ZStack {
VStack(spacing: 0) {
DetailNavigationBar(title: "게시글 등록")
ScrollView(.vertical, showsIndicators: false) {
VStack(spacing: 0) {
VStack(spacing: 0) {
Text("이미지")
.font(.custom(Font.bold.rawValue, size: 16.7))
.foregroundColor(Color(hex: "eeeeee"))
.frame(maxWidth: .infinity, alignment: .leading)
ZStack {
Image("ic_logo2")
.resizable()
.scaledToFit()
.padding(13.3)
.frame(width: 107, height: 107)
.background(Color(hex: "13181B"))
.cornerRadius(8)
Image("ic_camera")
.padding(10)
.background(Color(hex: "3BB9F1"))
.cornerRadius(30)
.offset(x: 50, y: 36)
}
.frame(alignment: .bottomTrailing)
HStack(alignment: .top, spacing: 0) {
Text("")
.font(.custom(Font.medium.rawValue, size: 13.3))
.foregroundColor(Color(hex: "777777"))
Text("등록할 이미지가 없으면 이미지 없이 게시글만 등록 하셔도 됩니다.")
.font(.custom(Font.medium.rawValue, size: 13.3))
.foregroundColor(Color(hex: "777777"))
}
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.top, 24)
HStack(spacing: 0) {
Text("내용")
.font(.custom(Font.bold.rawValue, size: 16.7))
.foregroundColor(Color(hex: "eeeeee"))
Spacer()
Text("0자")
.font(.custom(Font.medium.rawValue, size: 13.3))
.foregroundColor(Color(hex: "ff5c49")) +
Text(" / 최대 500자")
.font(.custom(Font.medium.rawValue, size: 13.3))
.foregroundColor(Color(hex: "777777"))
}
.padding(.top, 26.7)
TextViewWrapper(
text: .constant(""),
placeholder: "내용을 입력하세요",
textColorHex: "eeeeee",
backgroundColorHex: "222222"
)
.frame(height: 184)
.cornerRadius(6.7)
.padding(.top, 13.3)
VStack(spacing: 13.3) {
Text("댓글 가능 여부")
.font(.custom(Font.bold.rawValue, size: 16.7))
.foregroundColor(Color(hex: "eeeeee"))
.frame(maxWidth: .infinity, alignment: .leading)
HStack(spacing: 13.3) {
SelectButtonView(title: "댓글 가능", isChecked: true) {
}
SelectButtonView(title: "댓글 불가", isChecked: false) {
}
}
}
.padding(.top, 26.7)
VStack(spacing: 13.3) {
Text("연령 제한")
.font(.custom(Font.bold.rawValue, size: 16.7))
.foregroundColor(Color(hex: "eeeeee"))
.frame(maxWidth: .infinity, alignment: .leading)
HStack(spacing: 13.3) {
SelectButtonView(title: "전체 연령", isChecked: true) {
}
SelectButtonView(title: "19세 이상", isChecked: false) {
}
}
}
.padding(.top, 26.7)
}
.padding(13.3)
VStack(spacing: 0) {
HStack(spacing: 13.3) {
Text("닫기")
.font(.custom(Font.bold.rawValue, size: 18.3))
.foregroundColor(Color(hex: "3BB9F1"))
.frame(maxWidth: .infinity)
.frame(height: 50)
.background(Color(hex: "13181B"))
.cornerRadius(10)
.overlay(
RoundedRectangle(cornerRadius: 8)
.stroke(Color(hex: "3BB9F1"), lineWidth: 1)
)
.onTapGesture {
hideKeyboard()
}
Text("등록")
.font(.custom(Font.bold.rawValue, size: 18.3))
.foregroundColor(Color.white)
.frame(maxWidth: .infinity)
.frame(height: 50)
.background(Color(hex: "3BB9F1"))
.cornerRadius(10)
.onTapGesture {
hideKeyboard()
}
}
.padding(13.3)
.frame(maxWidth: .infinity)
.background(Color(hex: "222222"))
.cornerRadius(16.7, corners: [.topLeft, .topRight])
Rectangle()
.foregroundColor(Color(hex: "222222"))
.frame(height: keyboardHandler.keyboardHeight)
.frame(maxWidth: .infinity)
if proxy.safeAreaInsets.bottom > 0 {
Rectangle()
.foregroundColor(Color(hex: "222222"))
.frame(height: 15.3)
.frame(maxWidth: .infinity)
}
}
.padding(.top, 100)
}
}
}
}
.edgesIgnoringSafeArea(.bottom)
}
}
}
}
struct CreatorCommunityWriteView_Previews: PreviewProvider {
static var previews: some View {
CreatorCommunityWriteView()
}
}

View File

@ -63,6 +63,9 @@ struct UserProfileView: View {
LazyHStack(spacing: 13.3) {
if UserDefaults.int(forKey: .userId) == creatorProfile.creator.creatorId {
CreatorCommunityWriteItemView()
.onTapGesture {
AppState.shared.setAppStep(step: .creatorCommunityWrite)
}
}
CreatorCommunityItemView()