일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- github
- app intents
- watchkit
- tabman
- Swift
- coreml
- ios
- widgetkit
- UIStackView
- spring
- Delegate Pattern
- WWDC22
- Sendbird
- Coding Test
- SwiftUI
- Project
- swift concurrency
- fcm
- Firebase
- Apple Developer Academy
- Flutter
- UIDatePicker
- 코테
- backend
- cloud functions
- Complication
- Tuist
- createml
- UITableView
- task.yield()
- Today
- Total
목록ios (57)
azhy의 iOS 이야기
2022년 8월 10일에 작성됨setContentHuggingPriority(_:for:)공식문서에 나오는 정의는 '뷰가 고유 크기보다 커지는 것을 방지하는 우선순위를 설정' 즉 더 이상 커지지 않게 합니다. 예를 들면 3개의 라벨을 height값이 300인 vertical stackView에 추가했습니다. stackView은 기본값이 fill이라서 추가한 3개의 라벨들이 300만큼 채우게 되는데, 여기서 만약 one과 three의 라벨 크기는 유지시키고 싶으면 어떻게 해야 할까?testLabelOne.setContentHuggingPriority(UILayoutPriority(251), for: .vertical)testLabelTwo.setContentHuggingPriority(UILayoutPri..
2022년 8월 9일에 작성됨기획이번 앱은 '어떤 걸 만들까'라는 고민이 생각보다 길었습니다. 왜냐하면 첫 번째 앱의 목표는 Swift 문법 익숙해지기, StoryBoard 사용법이었고 두 번째 앱은 SwiftUI 접해보기라는 큰 틀의 목표가 분명했습니다. 그래서 엄청 복잡한 기능들이 들어가지 않은 앱들이었습니다.앞의 프로젝트들로 기초를 다졌으니 이번에는 뭔가 다른걸 해보고 싶었습니다.시간이 지나 앱스토에서 앱들을 구경하다가 문득 생각이 든 게 위젯이었습니다. 위젯을 큰 목표로 잡고 들어가니 커플 디데이 앱을 만들면 두고두고 기능도 넣으면서 나중에 쓰지 않을까?라는 생각에 커플 디데이 앱을 만들기로 결정을 했습니다!개발2022.06.08 ~ 2022.07.21첫 릴리즈는 7월 21일이니 대략 1달 반 정..
2022년 8월 8일에 작성됨 제가 진행했던 코드들을 보면서 Complication을 어떻게 핸들링하는지 한번 알아보도록 하겠습니다! 앞에 글을 안 보고 오셨으면 이해를 하기 어려울 수 있으니 꼭 한 번씩 읽어보시고 오세요!Watch와 Complication 데이터 공유데이터를 보여주지않고 앱 아이콘이나 사진 같은걸 Complication에 보여주면 넘어가셔도 됩니다.// InterfaceController//class DayInfo { static let shared = DayInfo() var days: String? private init() { } }class InterfaceController: WKInterfaceController, WCSessionDelegate { ..
2022년 8월 5일에 작성됨Complication..?? 이게 뭔데?네.. 저도 처음에는 몰랐습니다.. 이게 뭔지.. 워치를 사용하시는 분이라면 이제는 아실 겁니다. 본인이 원하는 정보들을 워치 화면에 많이 표시하죠.예를 들자면 배터리라던가 날씨, 카카오톡, 유튜브 뮤직 등등 공식문서에서는 Complication을 이렇게 정의합니다. "사람들이 손목을 올릴 때마다 볼 수 있는 시계 페이스에 관련된 정보들을 표시합니다." 만약 iOS앱과 함께 워치앱을 출시하고 Complication 관련해서 세팅을 안 해주면 모든 종류가 default로 전부 다 들어가는 것 같습니다. 그리고 아무런 처리를 안 해주었기 때문에 아무런 데이터가 뜨지 않는 상태가 됩니다. 그래서 만약 워치앱을 출시했는데 '나는 Complic..
2022년 8월 4일에 작성됨 이번 글은 제 프로젝트를 통해 Watch Connectivity를 사용한 예시를 소개하면서 몇 가지 있었던 문제들을 소개하려 합니다. 제가 앞에서 설명한 부분을 안 보셨다면 꼭 WatchKit[1], WatchKit[2] 를 읽어보시고 진행해 주세요! updateApplicationContext(_:)우선 저는 커플 디데이 프로젝트를 진행 중입니다. iOS앱에서 day와 배경사진을 설정하면 watch앱에서 그 데이터를 가지고 watch화면에 보이게 되는 형태입니다. 데이터를 보내는 Send 메서드 중 저는 updateApplicationContext(_:) 이 친구를 가지고 이미지와 day 데이터를 같이 넘기려고 했습니다.그러나 문제가 발생했습니다. 저는 이미지와 day 데..
2022년 8월 2일에 작성됨Watch ConnectivityiOS 앱이랑 watch 앱이랑 데이터를 주고받으려면 widget처럼 UserDefaults 데이터를 가지고 쉽게 공유할 수 없습니다.사진으로 보면 알 수 있듯, iOS App의 Data Store 부분과 Watch App의 Data Store 부분이 완전 분리돼 있기 때문이죠. 그래서 우리는 Watch Connectivity 를 사용해서 데이터를 공유해야 합니다. 공식문서에서는 Watch Connectivity를 이렇게 정의하고 있습니다. " iOS 앱과 페어링된 watchOS 앱 간의 양방향 통신을 구현합니다. " 이제 iOS앱과 watch앱 사이에 데이터 공유를 위해서는 Watch Connectivity 를 사용해야 하는 것을 알았으니 한..
2022년 8월 1일에 작성됨 이번에는 앱을 만들면서 watch 앱도 같이 만들어 봤습니다.모든 글들은 제가 경험하고 진행했던 프로젝트에 기반해서 작성될 거라 제가 모르는 개념들도 많고 틀릴 수도 있습니다. 댓글로 알려주시면 수정하겠습니다. 아마 watch 관련된 글도 widget처럼 3~4개 정도 나오지 않을까 예상해 봅니다.워치 프로젝트 생성기본적으로 워치 프로젝트 생성은 2가지 케이스가 존재합니다. 처음부터 watch 앱을 포함한 프로젝트를 생성하기.File - New - Project - watchOSiOS App with Watch App은 iOS 앱과 워치 앱이 서로 연동이 가능한, 즉 iOS 앱도 만들고 watch 앱도 만드는 프로젝트이고 Watch App은 iOS 앱을 제외하고 워치 앱만 ..
2022년 7월 27일에 작성됨 앱 심사를 하고 나서 처음으로 리젝을 받아봤습니다.. 수많은 리젝 사유들이 존재하지만 제가 받은 사유는 App Completeness 제가 받은 리젝 사유입니다. 사실 리젝을 받을 거라고는 예상을 못했습니다.. 그래서 더욱 당황했고 또 알아보니 저의 케이스가 해결하기 쉬운 케이스가 아니었습니다.. "앱 어딘가에서 crash가 났다 - 불완전한 앱은 심사를 통과할 수 없다." 였는데 내가 몇 번을 테스트했을 때도 앱 어딘가에서 에러가 난 적이 없었습니다.그래서 혹시나 싶어 시뮬레이터, 실기기 다시 한번 더 쭉 테스트해봤는데도 그 어디에서도 에러가 없는데.. 그래도 애플 쪽에서 crash가 났다고 하니 천천히 하나씩 진행해 보겠습니다. 음.. 저 4개의 파일 중 하나인데, 이..
2022년 7월 24일에 작성됨 UIDatePicker로 날짜를 선택하는 경우, 특정한 날짜를 선택하면 안 되는 경우가 있습니다. 예를 들어 오늘 기준 미래의 날짜를 선택하면 안되거나 과거 특정한 날 이상을 벗어나면 안 되는 경우 등 다양한 경우의 수가 존재하죠. 이럴 때 UIDatePicker에 선택할 수 있는 날짜의 범위를 지정해 줄 수 있습니다.private let datePicker: UIDatePicker = { let datePicker = UIDatePicker() datePicker.preferredDatePickerStyle = .wheels datePicker.datePickerMode = .date datePicker.locale = Locale(identifie..
2022년 7월 22일에 작성됨기획첫 번째 앱 출시하고 바로 두 번째 앱을 뭐 만들까 고민하고 있었습니다. 첫 번째 앱은 StoryBoard를 이용해서 UI를 그리고, UIKit 기반으로 작성했으니까 두 번째 앱은 SwiftUI를 경험해보고 싶었습니다.그래서 SwiftUI로 만들기로 결정을 했고, 어떤 것을 만들까 고민하다가 이번에도 처음 해보는 SwiftUI로 만들어야 해서 엄청난 기술을 요구하는 프로젝트는 진행할 수가 없어서 생각해 낸 게 환율 계산기였습니다. 단순한 계산기가 아닌 환율 계산기라면 난이도도 적당하다고 판단이 됐습니다. 이미 앱스토어에 올라와있는 환율계산기 몇 개를 다운받아 봤는데, 대부분 디자인도 비슷하고 기능도 비슷했습니다. 사실 우리한테 중요한건 SwiftUI라는 새로운 문법으로 ..