일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Kotlin
- AsyncImage
- pod install
- segue
- SwiftUI_Preview_Provider
- SWIFT
- autolayout
- ios15
- swiftUI
- format형식
- Alert
- android
- Java
- ViewModifier
- NotificationCenter
- UserDefaults
- Appearance변경
- programmers
- kakaomap
- 백준
- ios
- alamofire
- MapKit
- UIStackView
- CoreLocation
- image
- EventKit
- cocoapods
- 코딩테스트
- snapkit
- Today
- Total
목록IOS/UIKit (25)
감자주먹밥
지금까지 RxSwift를 이용한 MVVM구조를 공부하고 적용해본적이 몇 번 있는데, Input Output 처럼 템플릿을 어느정도 만들어 놓고 사용할 수는 있지만 제대로 된 템플릿이 있지는 않다보니 항상 개발하면서 바인딩 하나하나 고민하고 검색을 하며 개발을 했었다.사실 MVVM 구조를 많이 개발 안해본것이 가장 큰 문제겠지만, RxSwift 역시 익숙치 않아 항상 개발하며 많은 시간이 걸렸다...그러던 중 RxSwift를 어느정도 써보면서 템플릿화 된 ReactorKit도 해보는게 어떻냐는 추천을 받았었다.이름을 들어본 회사에서 기술스택에 포함되어 있는것을 봤어서 한 번 적용해보자! 라는 마음으로, iOS를 처음 시작했을때 패캠 강의를 다 보고 만들어 출시한 앱을 ReactorKit으로 구조를 변경해보..
이번에는 간단하게 변경한 UI 2가지를 정리하려고 한다.TableView 무한 스크롤의 경우 구현 한 적이 있었지만, 최신곡, 인기곡 등 그렇게 버거울 정도의 데이터가 한번에 들어오는게 아니여서 그냥 한번에 데이터를 불러와 보여줬었지만노래 검색의 경우 "사랑" 단어를 포함한 노래만 4만곡 이상을 넘어가는 것으로 기억한다. 이것 때문이라도 페이징으로 데이터를 불러와야 할 거 같아 수정했다.TextField+UIDatePicker는 최신곡 조회 기능에 날짜를 선택하기위해 사용했었는데, DatePicker에 연, 월 만 선택하는 걸 원했지만 당시에 왜 속성이 없지? 하면서 그냥 Date 전체를 선택할 수 있게 했던게 아쉬워서 수정하게 됐다.수정을 위해 좀 알아보던 중 datePickerMode에 yearAnd..
iOS 강의를 다 듣고 바로 만들어서 배포해 본 앱이 있는데,, 이번에 다시 보니 정말 배웠던거 그대로 다 넣느라고 이상한게 많아서 수정하면서 정리를 하기로 했다.앱의 기능 중 맘에 드는 곡을 북마크 하면 따로 애창곡 리스트로 볼 수 있는 기능이 있는데, 당시에 UserDefaults를 알게되고 아! 이게 iOS에서 DB처럼 쓰는거구나! 하면서 그냥 사용했다.그러다 옛날 블로그 포스팅으로도 있지만 CoreData 존재를 알고나서 보니 멍청한 짓을 한 거 같아서 이것부터 수정하기로 했다.일단 둘의 차이점을 먼저 알아보자면UserDefaults는 App Setting 정보 같은 간단한 정보를 저장하기에 적합하고CoreData는 복잡하고 큰 데이터를 저장하기 적합하다.CoreData를 데이터베이스 자체로 알고..
Diffable Data Source? Diffable DataSource는 WWDC 19에 발표되었고, IOS 13 이상 부터 사용가능하다. TableView, CollectionView의 DataSource에서 개선된 것임으로 둘 다 적용이 가능하다. 변경된 Data를 적용해야 할 때 그냥 reloadData를 써버리거나, performBatchUpdates로 애니메이션 까지 신경쓰며 갱신을 해 줬지만, Diffable DataSource를 사용하면 첫 설정에 UI에 대한 설정 말고는 데이터가 변할 때 마다 apply만 해 주면 알아서 애니메이션 까지 자연스럽게 적용할 수 있다. 적용하기 먼저 결과 화면 먼저 스토리 보드를 사용해 collectionView를 추가했다. Diffable DataSour..
EventKit 달력, 미리알림 어플의 데이터에 접근 하여 이벤트를 생성, 검색, 편집을 할 수 있는 프레임워크. 먼저 사용하기 전, info.plist에 권한 체크를 받아야 한다. let status = EKEventStore.authorizationStatus(for: .event) switch status { case .notDetermined: //아직 권한 팝업 뜨기 전 let accessGranted = try await ekStore.requestAccess(to: .event) guard accessGranted else { throw ServiceError.accessDenied } case .restricted: throw ServiceError.accessRestricted case ..
저번에 UICollectionView의 Compositional Layout을 공부할 때 만들었던 영화앱의 API 통신 부분을 공부할 겸 변경하게 되었다. 영화진흥원 API를 사용해 일간, 주간 박스 오피스 리스트를 가져오고, KMDB API를 사용해 영화 상세정보를 받아와 포스터를 띄웠다. ///BoxOffice 일간, 주간 정보 모두 반환 func searchBoxOfficeInfo(dateRange: DateRange) async throws -> [MovieInfo] { let url = APIInfo.boxOfficeHost + dateRange.rawValue var dataTask: DataTask switch dateRange { case .daily: let param = BoxOffic..
Localization 현지화 - Apple Developer 앱, 제품 페이지 및 마케팅 자료를 현지화하여 전 세계의 고객과 더 효과적으로 연결하는 방법에 대해 알아보십시오. developer.apple.com 어플을 개발하고 출시했을 때 여러 나라의 언어를 대응해서 다양한 국가에 사용경험을 주기 위해서는 앱 현지화가 필수다. 국가마다 사용하는 언어를 대응해 개발하려면 Localizable을 사용하면 된다. SwiftUI도 UIKit과 비슷하게 설정할 수 있다. Localization 설정 Project > Info > Localizations 를 보면 언어를 추가할 수 있는 항목이 있다. 기본으로 English가 Base로 설정되어 있고 한국어만 추가하고 한국어-영어 대응 해보기. Strings Fi..
공부하면서 또 새로운 프로젝트를 만들어서 세팅하고 빌드하려니 오류가 떴습니다. Your maximum App ID limit has been reached. You may create up to 10 App IDs every 7 days. 7일동안 최대 10개의 프로젝트만 생성할 수 있다고 합니다... 애플 개발자 계정 등록을 안해서 뜨는 제한입니다. 그만큼 많이 만들진 않았는데 아무래도 예제 프로젝트들도 여러개 다운받고 Bundle ID를 맞춰놓고 앱을 돌려봤다보니 처음으로 10개를 채운 것 같습니다. 가장 좋은 방법은 돈 내고 개발자 계정 등록이지만 아직 돈이 없어서... 7일을 기다려야 합니다.. 하지만 해결방법은 있습니다. 1. 이전에 썼던 Bundle ID를 가져와 쓴다. 검색해보면 가장 많이 ..
UIKit을 사용하고 있는 프로젝트에서 SwiftUI도 같이 사용하고 싶으면 어떻게 해야할까요? 기존에 SceneDelegate에서 시작 화면을 설정할 땐 아래와 같이 window.rootViewController에 시작화면으로 쓸 VC를 넣어줘 동작하게 했습니다. // UIKit만 썻을때 guard let windowScene = (scene as? UIWindowScene) else { return } self.window = UIWindow(windowScene: windowScene) // 사용할 collectionView Layout 채택 let layout = UICollectionViewFlowLayout() let homeViewController = HomeViewController(co..
처음 colllectionView를 사용했을 땐 StroyBoard에 UICollectionView DataSource, Delegate, 추상 클래스인 UICollectionViewLayout를 상속받은 UICollectionViewFlowLayout을 이용해서 크기 지정과 데이터를 관리하는 코드만 작성하였습니다. 이번에는 UICollectionViewCompositionalLayout을 사용해서 멋진 레이아웃을 만드는 법을 알아보겠습니다. UICollectionViewCompositionalLayout WWDC 19 에 발표되었으며, IOS13부터 사용할 수 있고 UICollectionViewLayout을 상속받아 만들어진 것입니다. Apple Developer Documentation develop..