Swift 140

번역기앱) enum의 활용

한국어, 영어버튼을 유지보수성 있게 enum으로 정리. import UIKit import SnapKit enum Language { case ko case en case ja case ch var title: String { switch self { case .ko: return "한국어" case .en: return "영어" case .ja: return "일본어" case .ch: return "중국어" } } } final class TranslateViewController: UIViewController { private var sourceLanguage: Language = .ko private var targetLanguage: Language = .en private lazy var s..

iOS/iOS FastCampus 2023.06.20

Deep Link -target iOS 13 이하 대응

Deep Link -target iOS 11.0 (iOS 13 이하 대응 필요한 경우 참고) (DeepLink를 AppDelegate에서 구현하는 방법) 딥링크 정확히는 custom scheme 구현이 필요하게 되었다. 고객이 본사 서버에서 작업된 특정 url 을 문자로 받아 해당 url을 Safari 또는 네이버 등등에 복사 + 붙여넣기를 하면, 해당 앱의 특정화면이 실행되게끔 해야 하는 것이 미션. 1) 사전작업: 프로젝트 - Info 부분에서 아래 URL types scheme 추가 왜 필요한가? 고객이 DeepLinkingDemo:// ~~ 로 시작하는 url을 받아서 접속시 우리 앱이 딱 실행되어야 하기 때문 2) 본격 코딩 작업 회사 앱 버전 target이 iOS 11 이므로 이를 고려해야 하..

RxSwift 간단 핵심 정리

Reactive Programming entity 방출 요소에 의존, 변경 사항을 구독, 해당 변경 사항에 반응. 왜 RxSwift 이용하는가? 상태를 다시 확인하고 수동으로 코드에 조건을 입력하지 않아도 됨 if -else 나 switch 구문 등을 많이 줄일 수 있다. 비동기 실행 코드를 observable-subscriber method에 의해 깔끔하게 짤 수 있음 핵심 요소 1. Observable : 모든 데이터 유형이 될 수 있는 Entity 모든 다른 유형의 이벤트가 발생 시 Observer에게 요소를 방출 2. Observer: 관찰 가능 항목 구독, 변경사항 수신, 모든 변경사항에 대해 프로그래밍된 조치를 취한다. 3. Dispose Bag: 특정 파일의 메모리 할당이 해제될 때마다 이걸..

iOS/RxSwift 2023.02.18

iOS Swift) 2개 이상의 변수를 한꺼번에 Swap

iOS Swift) 2개 이상의 변수를 한꺼번에 서로 바꾸기 (Swap) Swap several variables between two variables 사용 예시 >> 가운데 언어 switch 버튼 클릭 시 한국어 영어 바꾸기 (버튼 UI 뿐만 아니라 내부 로직도 바꿔줘야 되었음) 적용 코드 예시>> @IBAction func changeLangBtn(_ sender: UIButton) { (firstLang, secondLang) = (secondLang, firstLang) (firstLangCode, secondLangCode) = (secondLangCode, firstLangCode) firstLangBtn.setTitle("\(firstLang)", for: .normal) secondLan..

RxSwift 제일 간단한 테이블뷰 만들기

RxSwift 제일 간단한 테이블뷰 만들기 without tableview 기본 메서드 (cellForRowAt, numberOfRowsInSection이 필요없음) import UIKit import RxSwift import RxCocoa class MainViewController: UIViewController, UITableViewDelegate { @IBOutlet weak var tableView: UITableView! //원래 tableViewItems = ["Item 1", "Item 2", "Item 3", "Item 4"]인데 이걸 Observable 시퀀스로 아래와 같이 변환 let tableViewItems = Observable.just(["Item 1", "Item 2", "..

iOS/RxSwift 2023.02.14

swift Apple로 로그인

swift Apple로 로그인 주의점: 애플 개발자 계정 결제한 경우에만 해당 Apple로 로그인 기능 추가할 수 있음. 1. Google Firebase 사이트에 접속 2. 콘솔에서 해당 프로젝트 생성 후 Authentication sign-in method에 아래와 같이 Apple 추가 3. Xcode 프로젝트에서 아래와 같이 Sign in with Apple 추가 등록하고 Signing Certificate가 잘 보이면 완료가 된 것임. 4. Apple Developer 사이트에서 로그인 5. Certificates, Identifiers & Profiles 에서 ServiceIds 이용 6. 아래는 예시.... 이런 식으로 추가 7. sign in with Apple enabled 체크표시 클릭 ..

TableView 안에 TextView 넣기

TableView 안에 TextView 넣기 스토리보드로 짜고 있는데, Tableview안에 textview를 넣고 contraints를 다 잡아도 제대로 나오지 않는 현상 발생 해결: UITextView 세부사항 조정하는 곳에서 Scrolling Enabled 속성 체크표시 해제해야 함!! Before After Scrolling Enabled 속성 체크표시 해제 참고: (아래 방법이 텍스트뷰가 늘어나는데 animation과 함께 늘어나서 자연스러워 보여서 좋았음) (다른 사이트에서의 방법(https://www.swiftdevcenter.com/the-dynamic-height-of-uitextview-inside-uitableviewcell-swift/)은 뚝뚝 끊어지는 느낌으로 textview 부분..

iOS Swift) didSet 사용 예시 (with tableview/ collectionview)

iOS Swift) didSet 사용 예시 (with tableview/ collectionview) func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cellId = String(describing: MyCollectionViewCell.self) let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! MyCollectionViewCell cell.profileImg.image = UIImage(systemName: syst..

DynamicTableView 다른 크기의 셀 높이 지정

DynamicTableView 다른 크기의 셀 높이 지정 아래와 같이 description Label 의 길이가 제각각이어서 서로 다른 크기의 셀 높이를 갖는 테이블 뷰! TIL Dynamic Tableview 만들 때 테이블뷰 아래까지 꽉 차게 0 0 0 0 constraints를 잡는데 다만, 주의할 점은 다음과 같다. 아래 constraints 세부사항을으로 들어가서 safe area bottom 이 아닌 superview.bottom 에 constraint를 건다. Stackview 관련 1) Stackview일단 만든다 -> 너비 높이가 지정이 안되어있을 건데, Label 또는 button 하나만 넣어도 일단 파란불 들어옴. 2) 그 다음에 요소를 여러개 넣고 싶으니까 당연히 Stackview..