문제점 발견⭐️🔗☀️ 사용 api 5 day weather forecast - OpenWeatherMap openweathermap.org 1) API 에서 제공되는 icon 과 dt_txt 간의 시간 불일치의 문제를 발견했다.시간별 데이터를 보여줄 때 예를 들어, 오전 6시인데 d(낮☀️) 아이콘이 아닌 n(밤🌙) 아이콘이 나오는 경우가 발생했다.이 문제점은 OpenWeatherAPI 에서 제공하는 icon 값은 UTC 기준으로 설정된 시간에 맞춰 제공되는데, API 에서 제공하는 dt_txt 값도 UTC 기준의 시간이었다. (Docs로 확인)그래서 이를 변환하지 않아서 실제 한국 시간과 불일치하는 문제가 발생한 것이다. 해당 데이터를 화면에 업데이트하니 시간에 맞지 않는 icon 표시되는 문제 ..
오늘은 진행하던 프로젝트의 ViewController에서 MVVM 패턴과 Combine을 적용해 리팩토링 과정을 진행했다. MVVM (Model-View-ViewModel) 패턴을 적용하면 코드의 구조화와 유지보수가 쉬워지고, 테스트가 용이해진다.또한, Combine을 사용하면 데이터 흐름을 반응형으로 관리할 수 있어, 데이터 변경 시 UI가 자동으로 업데이트된다는 장점이 있다. ✔️ 기존 구조 문제점기존의 ViewController는 네트워크 호출과 UI 업데이트를 모두 담당했다. 네트워크 호출을 통해 날씨 데이터를 받아오고,데이터를 받은 후, 바로 UI 요소(라벨, 이미지 등)을 업데이트이렇게 모든 로직이 ViewController에 몰려 있으면 유지보수가 어렵고, 테스트도 힘들다. ✔️ MVV..
TIL 쓰는 것도 공부하는 것도 지쳐있었는지 많이 못했는데 다시 써봐야겠다..🥹🥹 프로젝트 기획을 1주일 동안 진행하다가 이번주부터 드디어 UI 작업을 시작했다.코드 치는 법 다 잊어버리는 줄 알았다. 오랜만에 UI 구성해 보려니까 왜 이렇게 어색한지..? 프로젝트 기획 기획 내용을 간단히 아래에 정리해보자.우선 프로젝트의 주제를 정하는 과정은 브레인스토밍으로 시작했다.여러 방향으로 팀원들과 각자 하고 싶은 앱의 기능 정리와 레퍼런스들을 찾아보며 어떤 앱을 하는 게 좋을지 토의 과정을 약 이틀정도 거쳤다. 첫날에는 가볍게 여러 주제로 이야기해 보고 둘째 날부터는 어떤 앱으로 하면 좋을지 디테일한 내용을 신경 쓰며 주제를 결정했다. 기획 VS 기능의 프로젝트 방향을 생각하고 사용하고 싶은 기술들도 ..
알람 앱 (1) - TabBarItem, NavigationBarItem 이미지 추가하기알람 앱 (2) - 스톱워치 구현하기, Timer와 버튼 상태 변화알람 앱 (3) - 스톱워치 테이블뷰에 랩 타임 추가하기알람 앱 (4) - UIEditMenuInteraction과 UIPasteboard스톱워치 마지막 과정이었던 코어데이터 적용하기까지 아주 늦은 정리를 해보려고 한다..!역시 미루면 안되는 TIL 우선 다음과 같은 화면에서 현재 시간과 테이블뷰 안의 정보들을 저장해야 했다. 이 화면에 필요한 정보의 전체를 다 저장 하는 엔티티를 만들었다가 관리가 어려워서 방향을 변경해서 지금 현재 타이머의 시간과 랩 테이블 뷰 안의 정보를 담는 엔티티를 따로 만들었다. 코어데이터 모델 생성StopwatchTimer..
알람앱 (3) - 테이블뷰에 랩타임 추가하기 [iOS] 알람 앱 (3) - 스톱워치 테이블 뷰에 랩 타임 추가하기알람앱(2) - 스톱워치 Timer, 버튼 상태 변화 [iOS] 알람 앱 (2) - 스톱워치 구현하기, Timer와 버튼 상태 변화알람앱 (1) - 스톱워치 화면 구성 및 기본 세팅 [iOS] 알람 앱 (1) - TabBarItem, NavigationBarItyujjne.tistory.com 이전 포스팅의 랩타임 기능까지 구현하고 새롭게 추가할 기능이 뭐가 있을까 고민하다 랩타임 기록을 복사하면 좋을 것 같아 Copy & Paste 기능에 대해 공부하고 추가했다.위 화면처럼 말풍선 창이 나타나고 복사가 되도록 구현했다. 어떻게 구현하는지 찾아보며 UIEditMenuInteraction이라는..
알람앱(2) - 스톱워치 Timer, 버튼 상태 변화 [iOS] 알람 앱 (2) - 스톱워치 구현하기, Timer와 버튼 상태 변화알람앱 (1) - 스톱워치 화면 구성 및 기본 세팅 [iOS] 알람 앱 (1) - TabBarItem, NavigationBarItem 이미지 추가하기오늘은 새로운 프로젝트 발제날! 프로젝트의 주제는 알람, 타이머, 스탑워치 기능yujjne.tistory.com 오늘은 Stopwatch화면의 테이블뷰 안에 Lap 타임을 추가하는 기능을 구현했다.테이블 뷰의 내용은 Lap 기록, Record 타임, Lap 타임(앞 기록과의 차이) 순으로 표현했다.또한 최신의 랩타임이 위쪽에 표시되도록 구현했다.테이블뷰 구성하기우선 LapTableView에 보여줄 Cell 파일을 만들어준다.i..
알람앱 (1) - 스톱워치 화면 구성 및 기본 세팅 [iOS] 알람 앱 (1) - TabBarItem, NavigationBarItem 이미지 추가하기오늘은 새로운 프로젝트 발제날! 프로젝트의 주제는 알람, 타이머, 스탑워치 기능이 있는 알람앱이다.주제들이 다 어려울 것 같아서 고민하다가 팀원들과 즐겁게 할 수 있을 것 같은 알람 앱으yujjne.tistory.com 오늘은 어제 구성한 스톱워치 화면에 기능 구현을 시작했다. Stopwatch 클래스 (Timer)우선 스탑워치 기능 구현을 위한 Stopwatch 클래스를 작성했다.import Foundationclass Stopwatch: NSObject { var counter: Double var timer: Timer override ini..
오늘은 새로운 프로젝트 발제날! 프로젝트의 주제는 알람, 타이머, 스탑워치 기능이 있는 알람앱이다.주제들이 다 어려울 것 같아서 고민하다가 팀원들과 즐겁게 할 수 있을 것 같은 알람 앱으로 결정했다. SA 작성이번에도 프로젝트 SA를 작성하고 코드컨벤션, 커밋 규칙 등을 작성하고 작업을 시작했다. Figma 작업와이어 프레임과 참고할 디자인 요소들도 피그마에서 작업했다.다크모드와 라이트모드의 디자인은 각각 정했는데 우선 다크모드 기준으로 구현한 후 수정할 것 같다! GitHub 초기 작업이번에는 개인 Repository 대신 Organization을 생성해서 Repository를 만들었다. 이제 ignore 파일 추가 후 초기 코드 업로드 후 각자 맡은 UI 작업을 시작했다. 이번에는 팀원들과 Iss..
오랜만에 개발하고있는 앱의 진행사항 기록을 해보려고 한다. 코드베이스로 전체 화면을 구성하는 건 처음인데요..!✍🏻우선 첫 화면부터 만들어보자. UITabBarController 사용하기탭 바 인터페이스를 관리하는 뷰 컨트롤러를 따로 만들었다.func configureUI() { self.view.backgroundColor = .white self.tabBar.backgroundColor = .systemGray5}func configureTabItem() { let searchVC = SearchTabViewController() let savedBooksVC = SavedBooksViewController() let searchNav = UINavigationContro..
오전, 오후 시간 각각의 영화 시간대가 출력되는 각각의 컬렉션 뷰를 구성하고 있었다.오전, 오후라는 제목을 넣고 싶어서 처음에는 다음과 같이 라벨 2개와 컬렉션 뷰 2개를 구성했었다.@IBOutlet weak var morningLabel: UILabel!@IBOutlet weak var morningCollectionView: UICollectionView!@IBOutlet weak var afternoonLabel: UILabel!@IBOutlet weak var afternoonCollectionView: UICollectionView! 2개의 컬렉션 뷰 중 하나의 셀만 선택하여 스타일을 변경 후 표시해주고 싶었는데 여러 방법을 시도해봐도 처리가 어려웠다. ▼ 시도 방법 확인하..