다른 테마를 추가하고 싶다면 ThemeType에 case를 추가하고 textColor, bgColor를 각각 지정해주면 됩니다.
enum ThemeType: String, CaseIterable, Codable {
case system = "System"
case light = "Light"
case dark = "Dark"
case atom = "Atom"
// 케이스 계속 추가...
}
final class ThemeManager: ObservableObject {
// 추가로 기존에 userDefault에 저장하는 코드는 삭제
}
그리고 ThemeView 대신 MemoThemeView를 사용했어요.
해당 부분은 PostView에서 메모지 선택 시, Sheet로 메모지를 선택할 수 있습니다.
(아래 영상 참고)
struct MemoThemeView: View {
@ObservedObject var themeManager: ThemeManager = .shared
@StateObject var viewModel: PostViewModel = PostViewModel()
@Binding var currentTheme: ThemeType // binding하여 상위 뷰 전달
var body: some View {
// ....
// 변경 Preview
VStack(alignment: .leading, spacing: 10){
Text("메모지 컬러 변경")
.font(.bold20)
Text("현재 글의 메모지 선택 설정을 변경할 수 있습니다.")
.font(.medium16)
}
.background(currentTheme.bgColor)
.foregroundColor(currentTheme.textColor)
ForEach(themeManager.themeList, id:\.self) { theme in
// ....
// theme 변경하는 버튼
Button {
currentTheme = themeManager.setTheme(themeType: theme)
} label: {
Text(theme.rawValue)
}
}
}
}
PR 가이드라인
PR Checklist
PR 날릴 때 체크 리스트
PR Type
어떤 종류의 PR인가요?
연관되는 issue 정보를 알려주세요
Issue Number: #225
PR 설명하기
이 PR에 대해 간략하게 소개해주세요!
어떻게 작동하나요? code 기반으로 설명해주세요
기존 메모 Model에 memoTheme을 추가했어요.
MemoService에도 데이터타입에 맞게, Firestore에 데이터를 저장하는 코드를 추가해줬어요.
다른 테마를 추가하고 싶다면 ThemeType에 case를 추가하고
textColor
,bgColor
를 각각 지정해주면 됩니다.그리고
ThemeView
대신MemoThemeView
를 사용했어요. 해당 부분은 PostView에서 메모지 선택 시, Sheet로 메모지를 선택할 수 있습니다. (아래 영상 참고)가능하다면 추가해주세요
변경 사항 스크린샷 혹은 화면 녹화
https://github.com/APP-iOS3rd/PJ3T2_Mymory/assets/75136643/785ea287-ab0f-4b5e-ade2-567afeb9b5ef
기타 언급해야 할 사항들