일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UITableView
- UIStackView
- swift concurrency
- Apple Developer Academy
- WWDC22
- Sendbird
- backend
- Tuist
- github
- app intents
- tabman
- Firebase
- spring
- Swift
- createml
- 코테
- Coding Test
- fcm
- cloud functions
- watchkit
- Delegate Pattern
- widgetkit
- ios
- SwiftUI
- Project
- Flutter
- Complication
- UIDatePicker
- task.yield()
- coreml
- Today
- Total
목록Swift (27)
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년 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월 9일에 작성됨Struct, Class 공통점값을 저장할 프로퍼티 정의함수적 기능을 제공하는 메서드 정의"."을 사용하여 하위 프로퍼티에 접근 가능생성자를 통해 초기상태 설정 가능확장 (extension) 가능프로토콜 사용 가능정의 예시struct SomeStructure { // structure definition goes here}class SomeClass { // class definition goes here} Struct와 Class 차이점Struct는 값 타입, Class는 참조 타입Class는 상속이 가능하지만 Struct는 상속 불가능 -> 프로토콜 채택해서 기능 확장 가능 (스위프트 권장방식)타입캐스팅은 클래스의 인스턴스만 가능 (상위 또는 하위 클래스 타입으..
2022년 7월 8일에 작성됨get, setget, set이라고 하면 흔히 생각이 들고 자주 봤었던 getter, setter라고 생각할 수 있습니다.사용하는 방법과 이유가 거의 유사합니다. swift에서는 get, set을 묶어 연산 프로퍼티라고 부르죠. 사용법을 간단히 먼저 알아봅시다.class Demo { // get, set을 사용하기 위해서는 그 연산된 값을 저장할 변수가 반드시 있어야한다. var _value : Int = 1 // value의 역할은 _value에 대해서 값을 연산하여 value에 할당하거나 리턴하는 역할만 한다. var value: Int { get { return _value } set(ne..

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..

2022년 6월 29일에 작성됨 delegate pattern 은 정말 자주 쓰이기 때문에 정말 중요합니다.delegate 가 무엇일까? 사전적 정의는 위임하다. 즉 어떤 작업을 다른 사람에게 위임해서 요청한다 라는 느낌으로 이해하면 됩니다. delegate pattern을 쓰기 위해서는 송신자와 수신자가 필요한데 쉽게 생각하면 데이터를 주고받는 ViewController 2개가 필요하다고 생각합시다. delegate 패턴은 보통 되돌아오는 과정 (B -> A) 경우에 사용하고 반대인 A -> B의 경우에는 프로퍼티 접근으로 쉽게 데이터를 전달할 수 있습니다. 프로퍼티 접근에 관해서는 맨 밑에서 간단히 설명해 볼게요.프로토콜 선언protocol TapDelegate: AnyObject { func ..