일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Protocol
- 리펙토링
- Clean Code
- swift documentation
- 리펙터링
- uitableview
- collectionview
- ribs
- 애니메이션
- Refactoring
- RxCocoa
- combine
- swiftUI
- tableView
- HIG
- 스위프트
- Observable
- Xcode
- 리팩토링
- rxswift
- Human interface guide
- MVVM
- SWIFT
- uiscrollview
- clean architecture
- ios
- UITextView
- 클린 코드
- map
- UICollectionView
- Today
- Total
목록swiftUI (164)
김종권의 iOS 앱 개발 알아가기

* 프로젝트 파일은 애플 튜토리얼 사이트나 이전 포스팅 글 참고 LandmarkDetail 화면 구현 방법 iOS 앱에서도 해당 화면과 유사한 화면을 만들었지만, 플랫폼마다 데이터를 표출하는 방법에는 각기 다른 방식이 필요 (애플 권장) 약간의 조정이나 조건부 compile을 통해 플랫폼 간 View를 재사용할 수 있지만 세부 사항 View같은 경우, iOS와 MacOS는 완전 다른 레이아웃을 가지고 있기 때문에 변경이 필요 차이점 - iOS는 작은 화면이고 macOS는 큰 화면이므로 에이아웃도 다르게해야 하는것이 좋음 (애플 권장) iOS 코드를 복사한 다음 MacOS 전용으로 수정하는 방식 코딩 MacLandmarks 폴더 하위에, MacLandmarks 타겟을 체크하고 생성 iOS의 Landmark..

* 프로젝트 파일은 애플 튜토리얼 사이트 참고 프로젝트에 macOS 타겟 추가하는 방법 앱을 미리 보고 실행 할 수 있으려면 macOS가 Monterey 이상에서만 가능 File > New > Target 선택 macOS > App 선택 생성 생겨난 파일들 확인 미리보기를 사용하기 위해서, scheme 설정 MacLandmarks > My Mac으로 설정 ContentView를 선택하여 preview 동작 확인 MacLandmarks 하위에 있는 MacLandmarksApp을 삭제 이전 포스팅 글에서 알아본 watchOS 앱과 마찬가지로 이미 있는 LandmarksApp를 사용할것이기 때문 iOS에서 만든 파일들을 macOS에서도 사용할 수 있도록 타겟 멤버십 추가 주의) 사진에는 LandmarkDeta..

* 패턴 매칭에서의 some 키워드 (optional unwraping에 사용되는 some 키워드는 이 포스팅 글 참고) Opaque Types (불투명 타입) 불투명 타입 단어 그대로 리턴 타입의 유형을 감추는 방법 protocol앞에 some 키워드를 붙여서 사용 some + { 어느 protocol... } computed property와 method에만 사용이 가능 반환 타입을 구현하는 쪽에서 마음대로 정할 수 있는 방법 ex) SwiftUI에서는 some 키워드를 computed property인 body에 사용 body 구현부에 들어가는 반환타입은 View 프로토콜을 준수하고 있으면 무엇이 오든 ok. struct ContentView: View { var body: some View { ..

* 애플워치에 UI 구현 방법 및 이전 코드는 이전 포스팅 글이나 애플 튜토리얼 페이지 참고 알림 UI 구현 이전 포스팅 글에서 알아본 애플 워치 타겟을 추가하면 자동으로 WatchKit Extension 폴더 하위에 NotificationController와 NotificationView가 생성 여기서 NotificationView에 UI를 구현하면 노티에 그대로 표출 NotificationView 구현 보통 APNs에서 오는 페이로드는 아래와 같은 json 내용으로 구성 aps 키값이 전체를 감싸고 있고, 그 안에 alert와 title, body가 존재 (표준 형식) { "aps":{ "alert":{ "title":"iOS 앱 개발 알아가기 타이틀", "body":"바디" }, "sound":3..

* 애플워치 타겟 추가 방법은 이전 포스팅 글 먼저 참고 애플워치 앱 뷰 만들기 iOS전용으로 만들었던 뷰 LandmarkList에서 셀을 누르면 LandmarkDetail로 이동하는데, 이때 애플워치에서 동일한 파일 이름LandmarkDetail으로 구현할 경우, 애플 워치를 실행했을때 iOS의 LandmarkDetail이 아닌 애플워치가 동작 ex) 애플워치 ContentView에 iOS 전용으로 구현한 LandmarkList를 사용하고, iOS 전용으로 구현한 LandmarkDetail.swift와 동일한 이름으로 애플워치 폴더 하위에 파일을 만들어 실행 -> LandmarkList는 애플워치에서 구현한게 아니므로 iOS에서 만든 뷰로 동작하고, LandmarkDetail는 애플워치 하위에 동일한 ..

* 아래 프로젝트 시작 파일은 애플 튜토리얼에서 다운 기존 iOS앱에 애플 워치 앱 타겟 생성 Xcode > File > New > Target... 선택 WatchOS > Watch App for iOS App 선택 Include Notification Scene 체크하여 생성 Scheme을 활성화 할것이라는 팝업에서 cancel 선택 Cancel을 선택해도, Scheme > WatchLandsmarks를 선택하여 워치앱을 빌드가 가능 생성된 파일 확인 WatchLandmarks 폴더 - 리소스가 위치 WatchLandmarks WatchKit Extension 폴더 - 애플워치에 사용되는 화면들이 위치 Target > ... WatchKit Extension > Supports Running Wi..
SwiftUI에서 UIkit 사용 방법 - UIView UIViewRepresentable 프로토콜을 구현하면 SwiftUI에서 UIView 사용 가능 @available(iOS 13.0, tvOS 13.0, *) @available(macOS, unavailable) @available(watchOS, unavailable) public protocol UIViewRepresentable : View where Self.Body == Never { associatedtype UIViewType : UIView func makeUIView(context: Self.Context) -> Self.UIViewType func updateUIView(_ uiView: Self.UIViewType, contex..

EnvironmentValues superview에서 darkmode로 설정하면 subviews들도 모두 darkmode로 변할 수 있는 기능을 EnvironmentValues로 제어가 가능 Swift에서는 개별 클래스로 관리하였지만, SwiftUI에서는 모두 Environment를 통해서 모두 접근이 가능 가장 대표적인 값은, 지금 지역을 알 수 있는 locale과 layoutDirection, undoManager 등 접근 가능 ex) superview에서 `colorScheme`값을 dark로 지정하면 subview들은 자동으로 dark mode로 변경 EnvironmentValues 종류 editMode colorScheme timeZone locale calendar layoutDirection..