본문 바로가기
반응형

ios30

MVP 패턴(Model, View, Presenter) for UIkit MVP 패턴의 유래MVP 패턴은 1990년대에 IBM의 개발자들이 "Taligent" 프로젝트에서 처음 개발한 것으로 알려져 있습니다. Taligent는 객체 지향 운영 체제와 개발 환경을 목표로 했던 프로젝트로, 여기서 MVP 패턴이 처음으로 소개되었습니다. 이후 다양한 애플리케이션 개발에 적용되면서 널리 사용되기 시작했습니다. MVP 패턴은 특히 안드로이드와 같은 모바일 애플리케이션 개발에서 많이 사용되며, 이는 MVC(Model-View-Controller) 패턴의 변형으로 간주될 수 있습니다. MVP(Model-View-Presenter) 패턴MVP 패턴은 소프트웨어 디자인 패턴 중 하나로, 사용자 인터페이스 로직을 분리하여 더 모듈화되고 유지 보수하기 쉬운 코드를 작성하는 데 도움을 줍니다. M.. 2024. 5. 31.
UISheetPresentationController에 대해서 (iOS15이상) iOS 15의 도입으로 애플은 개발자들에게 강력한 새로운 도구를 제공했습니다. 이 컨트롤러를 사용하면 Apple 지도나 Safari와 같은 앱에서 사용자가 경험하는 것처럼 시트 형식으로 뷰 컨트롤러를 프레젠테이션할 수 있습니다. 이번 블로그 포스트에서는 UISheetPresentationController의 기능, 커스터마이징 옵션, 그리고 실용적인 사용 사례에 대해 살펴보겠습니다.UISheetPresentationController란?UISheetPresentationController는 iOS 15에서 도입된 새로운 프레젠테이션 컨트롤러입니다. 이 컨트롤러는 뷰 컨트롤러를 시트 형태로 프레젠테이션하며, 사용자는 이 시트를 상하로 끌어서 원하는 높이로 조절할 수 있습니다. 기본적으로 시트는 화면 하단에.. 2024. 5. 23.
Swift Package Manager(SPM)를 이용한 라이브러리 사용 방법 Swift Package Manager(SPM)는 Swift 언어를 위한 패키지 관리 도구다. 여기서 패키지 관리자란, 프로젝트에서 사용하는 외부 라이브러리나 프레임워크를 편리하게 관리할 수 있게 도와주는 도구를 말한다. 필요한 라이브러리를 쉽게 찾고, 추가하며, 업데이트할 수 있다. CocoaPods, Carthage와 같은 기존 의존성 관리 도구가 있지만, SPM은 편의성과 빌드 속도의 이점을 가져 갈 수 있다. 또한 애플에서 직접 제공하는 1st party 의존성 도구이므로 사용성이 높아지고 있다. Swift Package Manager는 Swift 언어에 내장된 도구로, Xcode와 함께 자연스럽게 통합되어 사용할 수 있다. 참고로, 다른 언어의 패키지 관리 도구로는 JavaScript의 npm,.. 2024. 3. 14.
현재 정착한 mvvm 아키택처 패턴 (for UIKit) MVVM (Model-View-ViewModel)은 UI 개발에 쓰이는 아키텍처 패턴이다. 이 패턴은 개발자가 비즈니스 로직과 사용자 인터페이스를 효율적으로 나눌 수 있게 만들어준다. 주로 세 부분으로 구성되어 있다. Model (모델): 앱의 데이터와 비즈니스 로직을 맡고 있다. 데이터 저장소, 모델, 서비스 등이 여기 포함되며, 데이터 처리 로직을 다룬다. View (뷰): 사용자가 보는 UI 부분이다. 뷰는 사용자의 앱 상호작용을 정의하고, MVVM에서는 뷰가 ViewModel을 통해 데이터를 보여주도록 설계되어 있다. ViewModel (뷰모델): 뷰와 모델 사이의 중간자 역할을 한다. 뷰모델은 뷰에 필요한 데이터와 명령을 제공하고, 뷰는 데이터 바인딩을 통해 모델의 상태 변경을 반영하거나.. 2024. 3. 11.
ios17.1 업데이트 주요 내용 정리 안녕하세요! 이번 ios17.1 업데이트가 나왔습니다.AirDrop에어드랍을 하고 난 후 AirDrop 범위를 벗어났을 때 인터넷을 통해 계속해서 콘텐츠 전송할 수 있도록 변경되었습니다. 이제 끊기는 일이 덜 할거 같네요. 스탠바이디스플레이를 끄는 시간을 제어할 수 있는 옵션이 새롭게 제공됩니다 잠금화면잠금 화면에서 사진 셔플과 함께 사용할 특정 앨범을 선택하는 옵션이 제공됩니다 스크린타임설정이 모든 기기에서 동기화되도록 안정성이 한층 강화 되었습니다 기타 버그 수정• 사용자가 다른 통화 중일 때 착신 전화의 발신자 이름이 표시되지 않을 수 있는 문제 해결 • 사용자 설정 벨소리와 구입한 벨소리가 메시지 수신음의 옵션으로 나타 나지 않을 수 있는 문제 해결 • 키보드 반응 속도가 느릴 수 있는 문제 해결.. 2023. 10. 27.
Designing For WatchOS(WatchOS용 디자인) 디스플레이: 가독성, 고해상도 인체공학: 화면에서 한 발 정도 떨어져 있음 반대 손을 사용하여 장치와 상호 작용 Always On Display 입력: 디지털 크라운을 이용한 수직 탐색 데이터 검사, 시계 페이스 홈 화면 및 앱 내에서 일관된 제어 터치스크린 제스처 액션버튼 GPS, 혈중 산소, 심장 기능 감지 센서, 알티미터, 가속도계, 자이로스코프 데이터 활용 앱 상호 작용: 하루 내내 켜진 디스플레이 자주 봄 1분 미만 지속되는 간결한 앱 상호 작용 컴플리케이션, 알림, Siri 상호작용 자주 사용함 시스템 기능: 익숙하고 일관된 방식으로 상호 작용하는데 도움을 줌 WatchOS에서 자연스러운 경험을 선사하기 위한 방법 중요한 정보를 간결하게 제공, 간단한 제스처로 하나 또는 두개로 목표 지향적인 .. 2023. 10. 16.
Designing For iOS (iOS용 디자인) 디스플레이: 중간크기의 고해상도를 갖고 있음. 인체공학: 한손 또는 양손, 가로 또는 세로 방향으로 화면 전환, 1~2피트(30~60cm) 입력: 멀티터치 제스처, 화면 키보드, 음성 제어, 개인 데이터 및 장치의 자이로스코프, 가속도계 입력, 공간 상호 작용 디자인이 자연스럽게 느껴지도록 하기위한 방법 화면 상에 표시되는 컨트롤의 수를 제한, 보조 세부 정보 및 작업을 최소화 디바이스 방향, 다크 모드, 다이나믹 타입 외관 변화에 신속하게 변환 사용자가 디바이스를 어떻게 잡고 있는지 고려 (예: 화면 중간 또는 하단에 컨트롤 위치 할때 동작이 더 쉬움) 사용자 개인 정보 허락받기 (위치, 생체 인증 사용 등.) 2023. 10. 16.
swift5.5 스레드 동시성 문제 및 해결 방안 (async/await, Actor) 동시성 문제는 여러 스레드 또는 동시에 실행되는 코드가 공유된 데이터에 액세스할 때 발생할 수 있습니다. 동시성 문제의 대표적인 예시는 "계좌 이체" 문제입니다. 계좌 이체를 예로 들어 볼 수 있습니다. 두 개의 계좌 A와 B가 있고, A 계좌에서 B 계좌로 일정 금액을 이체하는 상황을 가정해 보겠습니다.class BankAccount { private(set) var balance: Int init(balance: Int) { self.balance = balance } func deposit(_ amount: Int) { balance += amount } func withdraw(_ amount: Int) { balance -= amount } } func transfer(from accountA:.. 2023. 3. 21.
반응형