일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UIStackView
- Apple Developer Academy
- UIDatePicker
- Tuist
- coreml
- createml
- cloud functions
- Sendbird
- UITableView
- Swift
- fcm
- Flutter
- github
- Firebase
- 코테
- Complication
- ios
- spring
- SwiftUI
- tabman
- backend
- WWDC22
- watchkit
- app intents
- widgetkit
- task.yield()
- swift concurrency
- Delegate Pattern
- Coding Test
- Project
- Today
- Total
목록Swift (15)
azhy의 iOS 이야기
Suspension pointsSwift Concurrency의 장점 중 하나로 소개된 것이 스레드를 코어 수만큼만 사용해서 콘텍스트 스위칭이 적다는 것이었습니다.하지만 반대로 스레드 개수가 제한되어 있어서 스레드가 작업을 오래 들고 있으면 다른 작업이 밀리는 상황이 발생할 수도 있습니다. 이러한 문제점을 어떻게 해결할까요?여기서 바로 Suspension points가 등장합니다. Suspension points는 OS에서 Swift Concurrency 작업의 스레드 점유권을 가져와 다른 작업에 할당할 수 있는 지점입니다. await 키워드를 잠재적 Suspension points라고도 합니다. 스레드가 작업을 오래 붙잡지 못하게 OS가 적절하게 스레드 점유권을 다른 작업에게 양도한다는 뜻이죠await..
2022년 10월 17일에 작성됨 평소에 Navigation Bar를 잘 사용 안 하다가 사용을 하려 했는데 배경 색이 자꾸 검은색으로 표시가 되는 문제가 발생했습니다. 사실 그 이유와 해결방법을 정말 별거 아닌데 나중에 계속 찾게 될까 봐 적어놓으려 합니다.문제Developer Forums에 문제점과 해결방법까지 다 나와있습니다. 정상적으로 나오던 bar 색깔이 오른쪽처럼 검은색으로 덮여버리는 현상입니다. 그 이유는 바로 WWDC21에 공지를 보면 알 수 있습니다. While UIKit does its best to make this new appearance seamless in your app, there are a few issues you may encounter. You should audit..
2022년 8월 19일에 작성됨 iOS는 앱의 사용량, 메모리가 너무 높아지면 앱을 죽이기 때문에 메모리 관리를 항상 신경 쓰며 코드를 짜야합니다.이러한 메모리 관리에 있어 도움을 주는 많은 친구들 중에 한명이 바로 lazy 키워드입니다.이미 많은 분들이 lazy에 대해 자세하게 설명을 해놓으셨기에 오늘은 중요한 키포인트 몇 개만 짚어보려 합니다.lazy variable?공식문서에는 lazy를 이렇게 정의합니다.'A lazy stored property is a property whose initial value isn’t calculated until the first time it’s used. You indicate a lazy stored property by writing the lazy mod..
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년 7월 24일에 작성됨 UIDatePicker로 날짜를 선택하는 경우, 특정한 날짜를 선택하면 안 되는 경우가 있습니다. 예를 들어 오늘 기준 미래의 날짜를 선택하면 안되거나 과거 특정한 날 이상을 벗어나면 안 되는 경우 등 다양한 경우의 수가 존재하죠. 이럴 때 UIDatePicker에 선택할 수 있는 날짜의 범위를 지정해 줄 수 있습니다.private let datePicker: UIDatePicker = { let datePicker = UIDatePicker() datePicker.preferredDatePickerStyle = .wheels datePicker.datePickerMode = .date datePicker.locale = Locale(identifie..
2022년 7월 12일에 작성됨Lottie 라이브러리 import간단힌 Lottie 라이브러리에 대해 설명하자면 에어비앤비에서 제공하는데, 쉽게 애니메이션을 그려주는 라이브러리입니다.공식문서 를 통해 각자 원하는 방법으로 import 해주세요. 개인적으로 SPM을 선호해서 저는 SPM으로 import 했습니다.Lottie 파일 다운로드따로 디자이너가 있는 회사이거나 팀 프로젝트이면 디자이너분한테 파일을 받으면 되지만 혼자하는 프로젝트이면 LottieFiles 요기서 원하는 파일을 찾아서 다운해주세요. 보시면 알겠지만 다양한 파일로 다운이 가능합니다. 저희가 필요한 파일은 제일 상단에 Lottie JSON 파일입니다. Lottie는 JSON 형식의 파일을 이용하여 애니메이션을 렌더링하기 때문이죠. 다운로드..
2022년 7월 7일에 작성됨PresentedVC vs PresentingVC먼저 이 두 개의 ViewController를 먼저 알아야 합니다. PresentedViewController : 자신이 호출한 ViewControllerPresentingViewController : 자신을 호출한 ViewController 이 친구들을 통해서 자신을 호출한 ViewController 가 있는지를 확인해서 dismiss 할 것인지에 대한 판단을 할 수 있습니다.func dismiss(viewController: UIViewController) { if presentedViewController == viewController { dismiss(animated: true) }}extensi..
2022년 7월 7일에 작성됨scrollToRow(at:at:animated:)사실 방법은 정말 간단합니다. 바로 scrllToRow를 사용하면 되는 데 사용법은 다음과 같습니다. // 날짜 안지난 스토리로 스크롤 이동 let startIndex = IndexPath(row: StoryDay().storyArray.firstIndex(of: StoryDay().storyArray.filter { $0 > Int(CoupleTabViewModel.publicBeginCoupleDay)! }.min()!)!, section: 0)self.tableView.scrollToRow(at: startIndex, at: .top, animated: false) 사실 코드는 별거 없습니다. 자신이 원하는 위치의 In..
2022년 7월 5일에 작성됨 개인 프로젝트를 하고 있는데 tableView를 사용하는 도중 내가 예상한 결과와 다른 화면이 나오는 문제가 생겼습니다. 원래 결과는 30일까지만 text가 회색이고 나머지 뒤에 text는 검은색이어야 정상적은 결과지만 보시다시피 중간에 뜬금없이 200일, 300일, 1주년, 400일 text가 회색으로 표시되고 있었습니다. 그래서 cell에 들어가는 data가 문제인가 싶어서 print를 찍어봤지만 데이터에는 문제가 없었어요.. 무엇이 문제인지 찾다가 결국 알아내서 한번 정리해보려 합니다.dequeueReusableCelltableView를 사용한 경험이 있으면 어디선가 봤을 법한 코드입니다. 애플 공식 문서에 따르면 "성능상의 이유로 테이블 보기의 데이터 원본은 일반적으..
2022년 6월 29일에 작성됨Button에 click action 달기 private lazy var setBtn: UIButton = { let btn = UIButton() btn.addTarget(self, action: #selector(setBtnTap), for: .touchUpInside) return btn }() @objc func setBtnTap() { print("setBtnTap") } 우선 click 했을 때 실행하는 함수를 만들어줘야 합니다. 간단히 setBtnTap이라는 함수를 만들었고 UIButton View를 하나 만들었습니다. 그 버튼에 addTarget이라는 메서드를 사용하여 앞에서 만든 s..