전체글167 [UIKit] Firebase, 애플 로그인 구현하기 Firebase에 애플 로그인을 구현해보았어요. 애플 ID 인증 > 파이어베이스 Sign In > 유저 데이터 확인 이런 흐름으로 진행되어요. UI에 대해서는 생략할게요. @escaping과 RxSwift, Combine 대신 async/await으로 비동기 처리를 해주었어요. 나름의 도전이었는데 개인적으로는 더 가독성이 높아진 것 같아요. 1. Firebase 로그인 제공업체에 Apple을 추가해주세요. 2. Signing & Capabilities에서 + Capability를 눌러 애플 로그인을 프로젝트에 추가해주세요. 3. 애플 로그인 버튼을 눌렀을 시 작동할 함수를 생성해주세요. @objc func appleSignInButtonTapped(_ sender: Any) { let appleIDPro.. 2023. 5. 1. [UIKit] UIMenu로 메뉴를 만들어보자 iOS 14부터 추가된 UIMenu를 통해서 간단하게 사진과 같은 메뉴를 만들어보았습니다. func configureSortMenu() { let volumeAction = UIAction(title: "거래량") { _ in guard self.sort != 0 else { return } self.sort = 0 } let winnersAction = UIAction(title: "상승") { _ in guard self.sort != 1 else { return } self.sort = 1 } let lossersAction = UIAction(title: "하락") { _ in guard self.sort != 2 else { return } self.sort = 2 } let menu = UIM.. 2023. 4. 27. [UIKit] TableView에서 insetGrouped 스타일로 섹션을 나눠보자 이번에는 TableView의 스타일 중에 하나인 .insetGrouped 를 활용해서 섹션을 나눈 방법에 대해서 기록할게요. 어딘선가 많이 본 스타일이죠? 1. TableViewCell을 생성해주세요. class ProfileCell: UITableViewCell { // MARK: - Properties private let cellLabel: UILabel = { let label = UILabel() return label }() // MARK: - Lifecycle override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifi.. 2023. 4. 22. [UIKit] TableView 위에 Header를 만들어보자 오늘은 UITableVIew에 Header를 만드는 방법을 기록할거에요. 사진 속에서 프로필 사진, 이름, 전화번호, 유저아이디가 있는 영역이 오늘 작업할 Header에요. 1. ProfileHeader를 만들어주세요. class ProfileHeader: UITableViewHeaderFooterView { // MARK: - Properties var vm: ProfileHeaderViewModel? { didSet { configure() } } private let profileImageView: UIImageView = { let iv = UIImageView() iv.contentMode = .scaleAspectFill iv.clipsToBounds = true iv.backgroundCol.. 2023. 4. 22. [UIKit] UISearchController, 검색 기능 구현하기 UISearchController를 활용해서 검색 기능을 구현해보았습니다. 구현한 화면은 다음과 같습니다. btc, 비트코인, bitcoin과 같은 검색어를 입력하면 필터링한 리스트를 새롭게 보여줍니다. 1. UISearchController를 생성해줍니다. 검색 중인지 상태를 알 수 있는 inSearchMode 변수도 만들어주었어요. private let searchController = UISearchController(searchResultsController: nil) private var inSearchMode: Bool { return searchController.isActive && !searchController.searchBar.text!.isEmpty } 2. 초기 설정을 해주어요. .. 2023. 4. 17. [UIKit] 업비트 API로 CollectionView에 리스트 만들기 feat.RxCocoa 지난 글에서 API로 데이터를 받아온 이후에 CollectionView가 새롭게 그려지지 않았던 문제를 해결하였습니다. UIKit 강의를 보니 데이터가 변경되었을 때 직접 reloadData()를 호출해서 갱신해주어야 하더라고요. @escaping 혹은 asycn/await을 사용해서 데이터를 받아온 이후 실행하는 방법도 있었지만, 저는 싱글톤 패턴을 사용해서 하나의 변수에 코인 리스트를 저장해서 변수의 값이 업데이트되었을 때 reloadData()를 호출하는 방법을 선택하였습니다. import Foundation import RxCocoa class UpbitRestApiService { static let shared = UpbitRestApiService() let coinsSubject = Beh.. 2023. 4. 13. 이전 1 2 3 4 5 ··· 28 다음