크리에이터 커뮤니티 등록 UI 추가
This commit is contained in:
		
							
								
								
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_logo2.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								SodaLive/Resources/Assets.xcassets/ic_logo2.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal 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 | ||||
|   } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_logo2.imageset/ic_logo2.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								SodaLive/Resources/Assets.xcassets/ic_logo2.imageset/ic_logo2.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 11 KiB | 
| @@ -113,4 +113,6 @@ enum AppStep { | ||||
|     case contentRankingAll | ||||
|      | ||||
|     case creatorCommunityAll(creatorId: Int) | ||||
|      | ||||
|     case creatorCommunityWrite | ||||
| } | ||||
|   | ||||
| @@ -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() | ||||
|   | ||||
| @@ -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) | ||||
|   | ||||
| @@ -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() | ||||
|     } | ||||
| } | ||||
| @@ -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() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yu Sung
					Yu Sung