크리에이터 커뮤니티 페이지 추가
This commit is contained in:
parent
b8fbb664d5
commit
650b6808e6
|
@ -0,0 +1,21 @@
|
||||||
|
{
|
||||||
|
"images" : [
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "1x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "2x"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"filename" : "img_sample.png",
|
||||||
|
"idiom" : "universal",
|
||||||
|
"scale" : "3x"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"info" : {
|
||||||
|
"author" : "xcode",
|
||||||
|
"version" : 1
|
||||||
|
}
|
||||||
|
}
|
Binary file not shown.
After Width: | Height: | Size: 456 KiB |
|
@ -111,4 +111,6 @@ enum AppStep {
|
||||||
case curationAll(title: String, curationId: Int)
|
case curationAll(title: String, curationId: Int)
|
||||||
|
|
||||||
case contentRankingAll
|
case contentRankingAll
|
||||||
|
|
||||||
|
case creatorCommunityAll(creatorId: Int)
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,6 +163,9 @@ struct ContentView: View {
|
||||||
case .contentRankingAll:
|
case .contentRankingAll:
|
||||||
ContentRankingAllView()
|
ContentRankingAllView()
|
||||||
|
|
||||||
|
case .creatorCommunityAll(let creatorId):
|
||||||
|
CreatorCommunityAllView(creatorId: creatorId)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
EmptyView()
|
EmptyView()
|
||||||
.frame(width: 0, height: 0, alignment: .topLeading)
|
.frame(width: 0, height: 0, alignment: .topLeading)
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
//
|
||||||
|
// IconAndTitleButton.swift
|
||||||
|
// SodaLive
|
||||||
|
//
|
||||||
|
// Created by klaus on 2023/12/15.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct IconAndTitleButton: View {
|
||||||
|
|
||||||
|
let iconName: String
|
||||||
|
let title: String
|
||||||
|
let onClick: () -> Void
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
HStack(spacing: 4) {
|
||||||
|
Image(iconName)
|
||||||
|
|
||||||
|
Text(title)
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
||||||
|
.foregroundColor(Color(hex: "d2d2d2"))
|
||||||
|
}
|
||||||
|
.padding(.horizontal, 13.3)
|
||||||
|
.padding(.vertical, 5.3)
|
||||||
|
.background(Color(hex: "ffffff").opacity(0.1))
|
||||||
|
.cornerRadius(26.7)
|
||||||
|
.onTapGesture { onClick() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct IconAndTitleButton_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
IconAndTitleButton(
|
||||||
|
iconName: "ic_audio_content_share",
|
||||||
|
title: "공유",
|
||||||
|
onClick: {}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
//
|
||||||
|
// IconAndTitleToggleButton.swift
|
||||||
|
// SodaLive
|
||||||
|
//
|
||||||
|
// Created by klaus on 2023/12/15.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct IconAndTitleToggleButton: View {
|
||||||
|
|
||||||
|
@Binding var isChecked: Bool
|
||||||
|
|
||||||
|
let title: String
|
||||||
|
let normalIconName: String
|
||||||
|
let checkedIconName: String
|
||||||
|
|
||||||
|
let onClick: () -> Void
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
HStack(spacing: 4) {
|
||||||
|
Image(isChecked ? checkedIconName : normalIconName)
|
||||||
|
|
||||||
|
Text("\(title)")
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
||||||
|
.foregroundColor(Color(hex: "d2d2d2"))
|
||||||
|
}
|
||||||
|
.padding(.horizontal, 13.3)
|
||||||
|
.padding(.vertical, 5.3)
|
||||||
|
.background(Color(hex: "ffffff").opacity(0.1))
|
||||||
|
.cornerRadius(26.7)
|
||||||
|
.onTapGesture { onClick() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct IconAndTitleToggleButton_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
IconAndTitleToggleButton(
|
||||||
|
isChecked: .constant(true),
|
||||||
|
title: "100",
|
||||||
|
normalIconName: "ic_audio_content_heart_normal",
|
||||||
|
checkedIconName: "ic_audio_content_heart_pressed"
|
||||||
|
) {}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,9 @@
|
||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
struct CreatorCommunityMoreItemView: View {
|
struct CreatorCommunityMoreItemView: View {
|
||||||
|
|
||||||
|
let onClick: () -> Void
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(spacing: 11) {
|
VStack(spacing: 11) {
|
||||||
Image("btn_item_more")
|
Image("btn_item_more")
|
||||||
|
@ -18,11 +21,12 @@ struct CreatorCommunityMoreItemView: View {
|
||||||
.font(.custom(Font.light.rawValue, size: 11))
|
.font(.custom(Font.light.rawValue, size: 11))
|
||||||
.foregroundColor(Color(hex: "bbbbbb"))
|
.foregroundColor(Color(hex: "bbbbbb"))
|
||||||
}
|
}
|
||||||
|
.onTapGesture { onClick() }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct CreatorCommunityMoreItemView_Previews: PreviewProvider {
|
struct CreatorCommunityMoreItemView_Previews: PreviewProvider {
|
||||||
static var previews: some View {
|
static var previews: some View {
|
||||||
CreatorCommunityMoreItemView()
|
CreatorCommunityMoreItemView {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,80 @@
|
||||||
|
//
|
||||||
|
// CreatorCommunityAllItemView.swift
|
||||||
|
// SodaLive
|
||||||
|
//
|
||||||
|
// Created by klaus on 2023/12/15.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct CreatorCommunityAllItemView: View {
|
||||||
|
|
||||||
|
@State var isExpandContent = true
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
VStack(spacing: 13.3) {
|
||||||
|
HStack(spacing: 0) {
|
||||||
|
Image("ic_place_holder")
|
||||||
|
.resizable()
|
||||||
|
.frame(width: 40, height: 40)
|
||||||
|
.clipShape(Circle())
|
||||||
|
|
||||||
|
VStack(alignment: .leading, spacing: 3) {
|
||||||
|
Text("민하나")
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
||||||
|
.foregroundColor(Color(hex: "eeeeee"))
|
||||||
|
|
||||||
|
Text("1개월 전(수정됨)")
|
||||||
|
.font(.custom(Font.light.rawValue, size: 13.3))
|
||||||
|
.foregroundColor(Color(hex: "777777"))
|
||||||
|
}
|
||||||
|
.padding(.leading, 11)
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Image("ic_seemore_vertical")
|
||||||
|
.padding(.trailing, 8.3)
|
||||||
|
.onTapGesture {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text("너무 조하유 앞으로도 좋은 라이브 많이 들려주세요!너무 조하유 앞으로도 좋은 라이브 많이 들려주세요!너무 조하유 앞으로도 좋은 라이브 많이 들려주세요!너무 조하유 앞으로도 좋은 라이브 많이 들려주세요!")
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
||||||
|
.foregroundColor(Color(hex: "bbbbbb"))
|
||||||
|
.fixedSize(horizontal: false, vertical: true)
|
||||||
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
|
.lineLimit(isExpandContent ? Int.max : 3)
|
||||||
|
.onTapGesture { isExpandContent.toggle() }
|
||||||
|
|
||||||
|
Image("img_sample")
|
||||||
|
.resizable()
|
||||||
|
.frame(maxWidth: .infinity)
|
||||||
|
.scaledToFit()
|
||||||
|
|
||||||
|
HStack(spacing: 8) {
|
||||||
|
IconAndTitleToggleButton(
|
||||||
|
isChecked: .constant(true),
|
||||||
|
title: "252",
|
||||||
|
normalIconName: "ic_audio_content_heart_normal",
|
||||||
|
checkedIconName: "ic_audio_content_heart_pressed"
|
||||||
|
) {}
|
||||||
|
IconAndTitleButton(iconName: "ic_audio_content_share", title: "공유") {}
|
||||||
|
}
|
||||||
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
|
|
||||||
|
CreatorCommunityCommentView(
|
||||||
|
commentCount: 2,
|
||||||
|
commentList: [
|
||||||
|
"내용 읽어보니까 결혼해도 될것 같은데",
|
||||||
|
"너무 조하유 앞으로도 좋은 라이브 많이 들려주세요"
|
||||||
|
],
|
||||||
|
registerComment: { _ in }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct CreatorCommunityAllItemView_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
CreatorCommunityAllItemView()
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
//
|
||||||
|
// CreatorCommunityAllView.swift
|
||||||
|
// SodaLive
|
||||||
|
//
|
||||||
|
// Created by klaus on 2023/12/15.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct CreatorCommunityAllView: View {
|
||||||
|
|
||||||
|
let creatorId: Int
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
BaseView {
|
||||||
|
VStack(spacing: 0) {
|
||||||
|
DetailNavigationBar(title: "커뮤니티")
|
||||||
|
|
||||||
|
ScrollView(.vertical, showsIndicators: false) {
|
||||||
|
LazyVStack(spacing: 26.7) {
|
||||||
|
CreatorCommunityAllItemView()
|
||||||
|
CreatorCommunityAllItemView()
|
||||||
|
CreatorCommunityAllItemView()
|
||||||
|
}
|
||||||
|
.padding(.horizontal, 13.3)
|
||||||
|
.padding(.vertical, 5.3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct CreatorCommunityAllView_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
CreatorCommunityAllView(creatorId: 0)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
//
|
||||||
|
// CreatorCommunityCommentView.swift
|
||||||
|
// SodaLive
|
||||||
|
//
|
||||||
|
// Created by klaus on 2023/12/15.
|
||||||
|
//
|
||||||
|
|
||||||
|
import SwiftUI
|
||||||
|
|
||||||
|
struct CreatorCommunityCommentView: View {
|
||||||
|
let commentCount: Int
|
||||||
|
let commentList: [String]
|
||||||
|
|
||||||
|
let registerComment: (String) -> Void
|
||||||
|
|
||||||
|
@State private var comment = ""
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
VStack(alignment: .leading, spacing: 11) {
|
||||||
|
HStack(spacing: 5.3) {
|
||||||
|
Text("댓글")
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 12))
|
||||||
|
.foregroundColor(.white)
|
||||||
|
|
||||||
|
Text("\(commentCount)")
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 12))
|
||||||
|
.foregroundColor(Color(hex: "909090"))
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
}
|
||||||
|
|
||||||
|
HStack(spacing: 8) {
|
||||||
|
Image("ic_place_holder")
|
||||||
|
.resizable()
|
||||||
|
.frame(width: 33.3, height: 33.3)
|
||||||
|
.clipShape(Circle())
|
||||||
|
|
||||||
|
if commentCount > 0 {
|
||||||
|
Text(commentList[0])
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 12))
|
||||||
|
.foregroundColor(Color(hex: "bbbbbb"))
|
||||||
|
.lineLimit(1)
|
||||||
|
.padding(.leading, 3)
|
||||||
|
} else {
|
||||||
|
HStack(spacing: 0) {
|
||||||
|
TextField("댓글을 입력해 보세요.", text: $comment)
|
||||||
|
.autocapitalization(.none)
|
||||||
|
.disableAutocorrection(true)
|
||||||
|
.font(.custom(Font.medium.rawValue, size: 13.3))
|
||||||
|
.foregroundColor(Color(hex: "eeeeee"))
|
||||||
|
.accentColor(Color(hex: "3bb9f1"))
|
||||||
|
.keyboardType(.default)
|
||||||
|
.padding(.horizontal, 13.3)
|
||||||
|
|
||||||
|
Spacer()
|
||||||
|
|
||||||
|
Image("btn_message_send")
|
||||||
|
.resizable()
|
||||||
|
.frame(width: 35, height: 35)
|
||||||
|
.padding(6.7)
|
||||||
|
.onTapGesture {
|
||||||
|
hideKeyboard()
|
||||||
|
registerComment(comment)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.background(Color(hex: "232323"))
|
||||||
|
.cornerRadius(10)
|
||||||
|
.overlay(
|
||||||
|
RoundedRectangle(cornerRadius: 10)
|
||||||
|
.strokeBorder(lineWidth: 1)
|
||||||
|
.foregroundColor(Color(hex: "3bb9f1"))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.padding(11)
|
||||||
|
.background(Color(hex: "ffffff").opacity(0.1))
|
||||||
|
.cornerRadius(5.3)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct CreatorCommunityCommentView_Previews: PreviewProvider {
|
||||||
|
static var previews: some View {
|
||||||
|
CreatorCommunityCommentView(
|
||||||
|
commentCount: 0,
|
||||||
|
commentList: [
|
||||||
|
"내용 읽어보니까 결혼해도 될것 같은데",
|
||||||
|
"너무 조하유 앞으로도 좋은 라이브 많이 들려주세요"
|
||||||
|
],
|
||||||
|
registerComment: { _ in }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
|
@ -74,7 +74,11 @@ struct UserProfileView: View {
|
||||||
CreatorCommunityItemView()
|
CreatorCommunityItemView()
|
||||||
.frame(width: 320)
|
.frame(width: 320)
|
||||||
|
|
||||||
CreatorCommunityMoreItemView()
|
CreatorCommunityMoreItemView {
|
||||||
|
AppState.shared.setAppStep(
|
||||||
|
step: .creatorCommunityAll(creatorId: userId)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.padding(.horizontal, 15)
|
.padding(.horizontal, 15)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue