반응형 IT/swift35 100 days of SwiftUI - Day38 항상하는 프로젝트의 마지막! 업그레이드 편이다. 1. 사용자의 통화로 바꾸세요! //ContentView, AddView 의 통화만 바꿔주면된다!Text(item.amount, format: .currency(code: "KRW")) 2. 금액에 따라 ContentView에서 표기를 다르게 하세요!처음에는 단순이 ContentView 내 List에 background modifier 를 추가해서 변경하려 했지만! 로직이 들어가면 안되니 안되고...변수를 선언해서 판단하게 했는데! 리스트가 추가될때마나 색을 나타내는 배열이 필요하더라...그래서 ExpenseItem 구조체에 색을 나타내는 변수를 추가 했는데!파일 저장시 Color는 저장값으로 안되어 있었다.. 그래서 저장시에는 colorIndex를 저장.. 2024. 12. 8. 100 days of SwiftUI - Day37 이번 프로젝트는 가계부 프로젝트!이름은 iExpense 애플 스러운 이름이다. 소스를 보자. 2개의 파일이 추가되었다.//// ContentView.swift// iExpense//// Created by HanTJ on 12/1/24.//import SwiftUIstruct ExpenseItem: Identifiable, Codable { //저장을 위한 Codable var id = UUID() //UUID자동생성! let name: String let type: String let amount: Double}@Observableclass Expenses { var items = [ExpenseItem]() { didSet { // p.. 2024. 12. 8. 100 days of SwiftUI - Day36 7번째 프로젝트 시작전 필요 기능 익히기 1. struct 와 class 차이struct 의 바인딩은 @State로 되지만, class 는 그렇지 않다. 이전에 살펴본 값참조, 레퍼런스참조와 관련있음.그래서 class 는 @State 가아닌 @Observable을 써야 뷰에서 변화를 감지하고 쓸 수 있다. 쓰는 위치도 변수 선언(클래스 인스턴스생성)이 아니라 클래스 선언쪽이다. 2. 다른 뷰를 보이고 숨기는 방법버튼에 .sheet modifier를 써서 보이게 할 수 있다. + 인자 넘기는 방법까지!그리고 자기 자신을 숨기는거는 @Environment 라인을 이용해서 dismiss를 선언하고 호출하면된다.struct SecondView: View { @Environment(\.dismiss) var d.. 2024. 12. 1. 100 days of SwiftUI - Day35 복습의 시간! for, forEach, ForEach 는 다르다!for 반복문forEach 배열의 내부함수 고차함수, 클로저ForEach 뷰를 반복하는 modifier 리소스에 대한 이야기모든 리소스파일(코딩이외 파일 프로젝트중 start.txt 단어리스트 같은거)는 빌드 타임에는 bundle로 묶여서 resources 폴더에 한곳에 존재하게 된다. 그래서 프로젝트 내에 리소스파일은 동일한 이름을 쓰게되면, 오류가 발생한다! 그리고 오늘의 과제!구구단을 입력한 단, 횟수만큼 문제를 내는 앱 만들기! //// ContentView.swift// edutainment//// Created by HanTJ on 12/1/24.//import SwiftUIstruct Question { var Q:.. 2024. 12. 1. 100 days of SwiftUI - Day34 역시 마지막 프로젝트는 실전! 이전 개발한 깃발 맞추기에 애니메이션을 추가하는거다1. 선택한 깃발 회전시키기2. 선택 안한 깃발 0.25 투명화3. 선택 안한 깃발에 무언가 애니메이션 넣기 ( 난 스무스하게 바뀌게 했다 )//// ContentView.swift// GuessTheFlag//// Created by HanTJ on 11/18/24.//import SwiftUIstruct ContentView: View { @State private var showingScore = false @State private var gameEnd = false @State private var scoreTitle = "" @State private var flagTappedName =.. 2024. 11. 29. 100 days of SwiftUI - Day33 애니메이션 더 공부하는 시강! 간단한 버튼 애니메이션//// ContentView.swift// Animation//// Created by HanTJ on 11/29/24.//import SwiftUIstruct ContentView: View { @State private var enabled = false var body: some View { Button("Tap Me") { enabled.toggle() } .frame(width: 200, height: 200) .background(enabled ? .blue : .red) .animation(.default, value: enabled) .. 2024. 11. 29. 100 days of SwiftUI - Day32 이번 공부는 애니메이션 이다. 공부하다보니 옛날 플래쉬가 생각난다.역시 알고리즘 보다는 움직이는거 짜는게 더 재밌다 크크크 애니메이션은 암시적(implicit), 명시적(explicit) 선언 방법이 있다.명시적인거는 WithAnimation 키워드를 쓰는거고, 이외는 몽땅 암시적이라고 보면 된다.암시적인 방법을 이용하는거는 modifier를 쓰거나, State변수를 바인딩해서 쓰는 방법이 있다. 멋찐? 애니메이션과 함께 명시적, 암시적 선언도 같이 봐보자!struct ContentView: View { @State private var animationAmount = 1.0 var body: some View { Button("Tap Me") { animat.. 2024. 11. 28. 100 days of SwiftUI - Day31 오늘은 훌륭하게 만든 단어게임 업그레이드 하기 1. 3글자 이하이거나 root단어와 동일하면 오류 발생하게 하기2. 툴바에 다시 시작하기 버튼 넣기(당연히 기능도 해야쥬?)3. 점수 넣기 ( 난 단어의 길이만큼 점수 추가! ) //// ContentView.swift// WordScramble//// Created by HanTJ on 11/25/24.//import SwiftUIstruct ContentView: View { @State private var usedWords = [String]() @State private var rootWord = "" @State private var newWord = "" @State private var errorTit.. 2024. 11. 27. 100 days of SwiftUI - Day29, 30 이번엔 영단어 만들기.. 한국어로 하는걸로 바꾸고 싶었지만.. 지금은 실력이 부족해서 패스! //// ContentView.swift// WordScramble//// Created by HanTJ on 11/25/24.//import SwiftUIstruct ContentView: View { @State private var usedWords = [String]() @State private var rootWord = "" @State private var newWord = "" @State private var errorTitle = "" @State private var errorMessage = "" @State private var showi.. 2024. 11. 25. 이전 1 2 3 4 다음 반응형