전체 글 87

Swift - Configuration Settings File(.xcconfig 파일)을 이용한 git에 API Key 숨기기

📑 학습 내용.xcconfig 파일을 이용하여 API Key를 git에 노출시키지 않도록 방법API Key는 민감한 정보이기 때문에 보안을 위해 Info.plist 파일에 저장하여 사용하면 좋음 1. Configuration Settings File 생성  2. API Key 선언  3. info.plist에 API 키 참조  4. .xcconfig 파일을 사용할 수 있도록 Project Info에 Configuration 파일 추가  5. API Key 불러오기- Bundle.main.infoDictionary?[”API_KEY”] as? String ?? “” 으로 불러오면 됨 init() { if let key = Bundle.main.infoDictionary["API_KEY"..

Swift 2024.11.16

Swift - 카카오 로그인 오류(웹 관리자 설정 오류, KOE101) 해결

문제 상황카카오 웹 로그인 중 앱 관리자 설정 오류 발생해결 과정KOE101 에러 : 잘못된 앱 키 또는 앱 키 타입을 사용하거나, 앱 키에 오타가 있을 경우 발생되는 에러카카오 디벨로퍼스 접속 후 앱 키 확인 (https://developers.kakao.com/console/app)→ 네이티브 앱 키를 제대로 쓰고 있었지만 .xcconfig 파일에 저장된 값을 제대로 불러오지 못했었음AppDelegate.swift 파일에서 초기화 할 때, .xcconfig 파일에 저장된 API Key를 불러오는 과정을 수정import UIKitimport KakaoSDKCommon@mainclass AppDelegate: UIResponder, UIApplicationDelegate { func applicat..

Swift 2024.11.16

Swift - 카카오 로그인 구현

카카오 로그인 구현 순서 1. 카카오 디벨로퍼 애플리케이션 추가- developers.kakao.com​  2. 카카오 로그인 활성화 설정  3. 동의 항목 설정→ 카카오 로그인 완료 후 개인정보를 옵셔널하게 받아오는데 동의가 되어있으면 값을 가져옴  4. 플랫폼 등록- 번들 ID 등록 5. Kakao-ios-sdk 설치 (SPM)https://github.com/kakao/kakao-ios-sdk모듈 정보 : https://developers.kakao.com/docs/latest/ko/ios/getting-started#project-plist→ KakaoSDK를 설치하면 모두 설치 됨  6. 프로젝트 설정6-1. 앱 실행 허용 목록- iOS SDK로 카카오톡 애플리케이션을 실행하려면 Info.pli..

Swift 2024.11.13

Swift - CollectionView - 선택한 셀 UI 변경

📑 학습 내용1. 선택된 셀의 인덱스 경로를 저장할 변수 추가 var selectedItemIndex : Int? 2. didSelectItemAt 메서드에서 선택된 셀의 인덱스 업데이트 후 reloadData() 호출 . . . func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { self.selectedItemIndex = indexPath.row collectionView.reloadData() } 3. cellForItemAt 메서드에서 저장된 인덱스로 UI 변경func collectionVie..

Swift 2024.11.11

Swift - Tab Bar 완전히 숨기기(hidesBottomBarWhenPushed 속성)

📑 학습 내용homeVC에서 navigationController로 다른 뷰로 넘어갈 때, 탭 바가 완전히 사라지지 않음 뷰는 나타나지 않지만, 레이아웃은 그대로 유지되는 현상 발생tabBarController?.tabBar.isHidden = true 사용시ViewController의 hidesBottomBarWhenPushed 속성으로 탭 바를 완전히 숨길 수 있음nextVC.hidesBottomBarWhenPushed = true func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { switch collectionView { case homeView..

Swift 2024.11.11

Swift - UIView 상단에만 테두리(border) 넣기

🍎 UIView 상단 border 넣기📑 학습 내용뷰와 뷰 사이의 경계선을 추가해야 함lineView를 여러 개 만들어 각 뷰 사이 사이 넣어주면 해결되지만, lineView가 여러 개 생기면 코드가 복잡해질 것 같음JustDrop 그룹 뷰를 만들어서 사용하기 때문에 이 그룹 뷰의 상단 테두리만 색을 넣어주면 될 것 같음상단 테두리만 지정하는 메서드는 없기 때문에 UIView 클래스를 확장하여 사용  UIView의 상단에 서브뷰를 추가하여 테두리처럼 보이게 만드는 방법extension UIView { func addTopBorder(color: UIColor, width: CGFloat) { let border = UIView() border.backgroundColor..

Swift 2024.11.04

Swift - [SnapKit] snp.updateConstraints()

📑 학습 내용updateConstraints() : 뷰의 제약조건 업데이트변경해야 하는 항목만 업데이트 가능함self.homeView.underlineView.snp.updateConstraints { make in make.leading.equalToSuperview().offset(currentX) make.width.equalTo(lineWidth)}아래의 기존 constraints 에서 top, height은 그대로 두고 leading, width 값만 변경기존 constraints underlineView.snp.makeConstraints { make in make.top.equalTo(segmentedControl.snp.bottom).offset(-1) ..

Swift - viewDidLayoutSubviews()

📑 학습 내용뷰가 하위 뷰의 레이아웃을 완료하면 뷰 컨트롤러에게 알리는 메서드뷰와 서브뷰들의 레이아웃이 모두 정해진 후 호출되는 메서드따라서, 뷰 컨트롤러는 하위 뷰를 레이아웃한 후 변경 하기 위해 이 메서드를 사용함viewDidLayoutSubviews 는 뷰가 생성되고 화면에 보이기 직전 상태로 최초로 뷰들의 크기나 위치를 알 수 있는 시점임뷰 컨트롤러에서 UIView의 레이아웃을 변경하고 싶을 때 viewDidLoad()에서 변경하게 되면 정상적으로 변경할 수 없음 (아직 레이아웃이 잡히지 않았기 때문)따라서 viewDidLayoutSubviews() 에서 변경해줘야 함 override func viewDidLayoutSubviews() { super.viewDidLayoutSu..

Swift 2024.10.20

Swift - UISegmentControl, Content Width 조정 방법

문제 상황세그먼트 컨트롤의 아이템의 width가 각 아이템의 텍스트 길이에 따라 다르지 않고 일정 크기로 동일한 상황텍스트가 길어지면 간격이 일치하지 않는 문제 발생 해결 과정apportionsSegmentWidthsByContent 속성 사용아이템 width에 따라 세그먼트 width를 조정하는지 여부를 결정// sc : UISegmentedControl(items : [...]).then { sc in ... }sc.apportionsSegmentWidthsByContent = true참고 자료https://developer.apple.com/documentation/uikit/uisegmentedcontrol/1618578-apportionssegmentwidthsbycontent

Swift 2024.10.20