일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Observable
- Human interface guide
- uitableview
- RxCocoa
- Protocol
- 스위프트
- swiftUI
- 클린 코드
- Clean Code
- ribs
- Xcode
- HIG
- tableView
- clean architecture
- swift documentation
- MVVM
- rxswift
- 리팩토링
- map
- UICollectionView
- collectionview
- 리펙터링
- SWIFT
- UITextView
- ios
- Refactoring
- combine
- 리펙토링
- uiscrollview
- 애니메이션
- Today
- Total
목록swiftUI (160)
김종권의 iOS 앱 개발 알아가기
다른 글) SwiftUI의 기본 - 목차 링크 TextField placeholder와 값을 입력할 수 있는 컴포넌트 사용할땐 @State 프로퍼티를 하나 두고 이 프로퍼티에 바인딩하여 현재 입력값을 상태에 저장 struct ContentView: View { @State private var username = "" var body: some View { TextField( "User name", text: $username ) } } TextField 활용 키보드 타입 .keyboardType(_:) TextField( "User name", text: $username ) .keyboardType(.numberPad) //
* 프로젝트 파일은 애플 튜토리얼 사이트나 이전 포스팅 글 참고 macOS 실행 시 Sidebar가 들어나지 않는 문제 해결 방법 macOS를 실행하면 Sidebar를 한 번 닫았을 때 다시 열 수 없는 문제가 존재 iOS에서 List형태 안에 NavigationLink로 구현하면 macOS에서는 아래처럼 좌측에는 리스트, 우측에는 NavigationLink에 삽입한 화면이 등장 LandmarkCommands 라는 파일 생성 LandmarkCommands 안에 SidebarCommands()를 선언 import SwiftUI struct LandmarkCommands: Commands { var body: some Commands { SidebarCommands() } } LandmarksApp에 .co..
* 프로젝트 파일은 애플 튜토리얼 사이트나 이전 포스팅 글 참고 ToolBar, Picker로 맥북앱에 어울리는 UI 구현 방법 Toolbar 사용 방법 .toolbar로 바로 추가 LandmarkList.swift에 추가 수정 전 수정 후 var body: some View { NavigationView { List { Toggle(isOn: $showFavoritesOnly) { Text("Favorites only") } ForEach(filteredLandmarks) { landmark in NavigationLink { LandmarkDetail(landmark: landmark) } label: { LandmarkRow(landmark: landmark) } } } .navigationTitl..
* 프로젝트 파일은 애플 튜토리얼 사이트나 이전 포스팅 글 참고 macOS UI 구현 LandmarkList.swift .frame(minWidth)값을 주어서 뷰의 크기를 크게 설정 (단, 다양한 플랫폼을 제공하려면 watchOS에서 minWidth를 사용하면 화면이 이상하게 될것이므로 이것은 아래에서 수정 예정) 수정 전 수정 후 struct LandmarkList: View { @EnvironmentObject var modelData: ModelData @State private var showFavoritesOnly = false var filteredLandmarks: [Landmark] { modelData.landmarks.filter { landmark in (!showFavoritesO..
* 프로젝트 파일은 애플 튜토리얼 사이트나 이전 포스팅 글 참고 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..