- Total
목록오뚝이 개발자/SwiftUI (44)
꿈꾸는리버리

☁️ Widget 시리즈 기본 시리즈SwiftUI Widget 딱대.. (1/3) 위젯 기본 개념 + 구현SwiftUI Widget 딱대.. (2/3) : 앱 내의 데이터를 widget에 띄우기SwiftUI Widget 딱대.. (3/3) : 위젯을 눌렀을 때 다른 화면으로 뜨게 하기SwiftUI Widget 딱대.. ( Lock Screen Widget ) 에러 시리즈SwiftUI Widget 딱대(짐).. : 위젯 memory 제한SwiftUI Widget 딱대(짐).. : localization 적용SwiftUI Widget 딱대(짐).. : 위젯에 폰트가 안 먹혀요...[Error 해결] Embedded binary's bundle identifier is not prefixed with the ..

오늘은 iOS에서 local Notification를 띄우는 방법에 대한 공부를 했다.그동안 어려울 거라고 생각하고 미루고만 있었는데, 해보니까 생각보다 안 어렵더라구요..? 조금은 허무한 감이 있어서 과거에 아무 것도 모르고 어려울 거라고 생각했던 제가 부끄러웠고, 역시... 안 해본 곳, 안 가본 곳은 더 크고 무섭게 느껴지는 것 같다...다음번에는 server 통신이 필요한 Notification까지! 섭렵해보자구 ~~ ㅎㅎ1️⃣ Notification 허용해주세요 구하기import SwiftUIimport UserNotificationsclass NotificationManager { static let instance = NotificationManager() // Singleton ..

🔧 문제 상황바야흐로.. 때는... 디자이너가 font system을 만들어줬던... 그 어느날.... 사실 Cherish는 빠른 MVP를 위해서 LineHeight를 100%로 해달라고 디자이너한테... 부탁했었는데, 이번 프로젝트때는 이미 많은 디자인이 완료된 후에 아.. 맞다...라는 생각이 들었고... 그렇게 Line height라는 녀석을 이제는 피할 수 없게 되었다. ⚠️ Cherish의 경우에는 한 줄짜리 디자인에서는 100%로 맞추고, 여러 줄의 경우에는 lineSpacing으로 했었음💬 고민 Point1️⃣ LineHeight의 개념 푸하! 일단 디자이너가 사용하는 lineHeight에 대해 알아보자! 위 그림과 같이 말 그대로 한 line에 들어가는 font의 height를 나타낸..

GeometryReader를 계속 제대로 공부해야지.. 해야지... 하다가 이번 기회에 확.. 제대로 개념을 잡고 넘어가기 위해 공부를 했다. 🌷 GeometryReader 란 ? 어려운 말들을 많이 써놨지만,, 내가 공부하면서는 GeometryReader란 GeometryReader로 감싸고 있는 뷰 안의 위치를 다양한 방법으로 제공해주는 View라고 정의를 했다. 🌷 GeometryReader가 나오게 된 배경 이거는 애플의 공식 이야기는 아니고, 여러 칼럼들을 찾아보고 정리한 개인적인.. 의견입니다. 왜 필요한지를 알아야 적재적소할 수 있을 것 같아서 정리해봅니다. 인게이지에 도움이 되시길! 1️⃣ UIScreen.main.bounds의 한계 UIScreen.main.bounds 같은 경우에는 기..

프로젝트하다가 사용하게 된 슬롯머신 구현!!! 생각보다 재밌었고,, 재밌었고 뿌듯했다 !! ㅎㅎ,, 🍀 결과물 lastRolledMachineCount은 슬롯을 돌릴 숫자이다. 이건 선호에 맞게 바꿔서 쓰면 된다. 그리고 finalNumberList는 마지막에 보여주고자 하는 숫자의 리스트이다. 나는 [3,4,5]로 돌렸는데, 만약에 [1,5,2,6,4]를 넣으면 5개의 박스가 돌아가고 마지막에 1,5,2,6,4 순서대로 초록박스가 공개된다! 🍀 고민 Point 처음에 어떻게 만들지.. 할 때는 ScrollView가 생각났다. ScrollView로 구현하고 위 아래를 막아서 일부만 보여주면 될 것 같다는 생각. 그래서 ScrollView에서 버튼을 눌렀을 때 ScrollView가 스크롤 되게 구현했다...

[Swift Concurrency 시리즈] 처음 개발을 시작했을 때 3개의 난관이 있었다. 제일 처음에는 for문이었고, 두번째는 네트워킹, 그리고 세번째는 아키텍쳐... iOS로 네트워킹을 깊게 파 본적이 없어서 이번에 Concurrency에 대해 공부해야겠다는 마음을 먹었고, 그 시작으로 저번에는 에러처리 try-catch문 / Result에 대해 공부했다. 그리고 오늘은 Async/Await, @escaping !! 네트워킹을 하게 되면 요청 후 답이 올 때까지 기다려야 한다. 그리고 답이 온 후에 재요청을 보낼 수도 있고,,, 하면서 네트워킹을 시작하면 생각해야 하는 사항들이 많아진다. 이를 위해서 나온 게 swift에는 @escaping, Combine, Async/Await가 있다. 하지만....

🔧 문제 상황 위와 같이 iOS 16.0일 경우와 아닌 경우를 분기해서 패딩을 넣어주는 코드가 있다. 원래 였다면, View Modifier가 하나 추가되는 것임에도 이렇게 두 번 코드를 분기해서 작성해야 했다. 💬 고민 Point 그래서 생각한 View Modifier를 분기할 수 있는 방법 ! 🌟 문제 해결 1️⃣ [ if ] ViewBuilder 추가 extension View { @ViewBuilder func `if`(_ condition: Bool, transform: (Self) -> Content) -> some View { if condition { transform(self) } else { self } } } 이렇게 조건을 분기해서 View modifier를 작성할 수 있도록 View..

Cherish 백업 기능을 구현하면서 다시 공부하게 된 Swift Concurrency.... 오늘부터 Swift Concurrency 시리즈를 올릴려고 한다. 그리고 그 시작으로 오늘은 Swift Concurrency 1) 에러처리에 대한 이야기로, try-catch문과 Result에 대한 내용이다! 왜 try-catch문/ Result를 사용해야 할까? 1️⃣ 예시 코드 위 코드를 확인해보자. View에서는 Viewmodel을, Viewmodel에서는 manager를 가지고 있다. ViewModel의 fetchTitle 함수를 통해 title 값을 변경한다. 이때 Manager의 fetchTitle에서는 isActive 값을 통해서 "New Text!"를 반환할지, nil을 반환할지 결정하게 된다...