Clover
article thumbnail
[Xcode/SPM] Package 최초 생성 시 "Invalid manifest" 에러
iOS(macOS) 2024. 3. 23. 16:44

개요 분리된 여러 프로젝트에서 사용하는 공통 코드들을 SPM(Swift Package Manager)으로 모듈화를 해서 관리하는 중이다. 특정 API를 호출하는 서비스 레이어나 유틸리티성 코드들은 한번 분리를 해놓으니 확실히 유지보수 하기 편하다. - SPM 생성에 참고한 블로그 : https://0urtrees.tistory.com/387 iOS Swift Package Manager, SPM 패키지 생성 및 사용방법 SPM, Swift Package Manager는 iOS의 built-in swift 코드 배포 관리 도구입니다. 비교적 지원하는 라이브러리가 적긴 하지만, cocoaPods, carthage 처럼 프로젝트에 라이브러리를 연결하거나 프로젝트 코드 모듈 0urtrees.tistory.co..

article thumbnail
[iOS/macOS] FCM을 사용한 Remote Push Notification 구현 방법과 문제 해결 기록
iOS(macOS) 2024. 2. 9. 14:31

개요 Remote Push Notification을 이용해서 요구사항을 구현하기 위해 Firebase Cloud Messaging(FCM)을 사용해 봤습니다. 체감상 가장 레퍼런스도 많고, 알람 횟수에 상관없이 무료라는 장점이 있어서 FCM을 선택했습니다. FCM을 사용하는 방법을 학습하고 적용하는 과정에서 삽질을 많이 했고, 새롭게 알게 된 것들이 많습니다. 그래서 제가 오해하고 있던 부분들과 해결 과정을 정리해서 남겨보려고 합니다. 프로젝트에 FCM 설정하기 & 예제 프로젝트 가장 먼저 해야 할 일은 Firebase 프로젝트를 세팅하는 작업과, 각자의 프로젝트에서 FCM을 사용할 수 있도록 연동하는 작업입니다. 조금만 검색해 봐도 자세하게 잘 정리한 다른 블로그가 많이 있어서 설명을 생략할까 했는데,..

SwiftUI - List의 scroll 비활성화
iOS(macOS)/SwiftUI 2023. 8. 19. 18:31

SwiftUI의 List를 사용할 때, Scroll 기능을 비활성화 하기 위한 방법 in iOS 16 (or later) .scrollDisabled(true) modifier를 List View에 추가해주면 간단하게 해결 가능. struct ScrollView: View { var body: some View { List { } .scrollDisabled(true) } } iOS 16 이전 버전에서도 사용 가능한 코드 .scrollDisabled() modifier는 iOS 16.0, macOS 13.0 이후부터 사용할 수 있다. 하위 버전에서는 simultaneousGesture() modifier에 DragGesture를 비활성화 시키는 코드를 주입해서 해결할 수 있다. struct ScrollV..

article thumbnail
[SwiftUI/iOS] 이미지 파일로 Launch Screen 만들기
iOS(macOS)/SwiftUI 2023. 8. 8. 14:14

[SwiftUI] 이미지 파일로 Launch Screen 만들기 SwiftUI 기반 프로젝트에는 기본적으로 Launch Screen.storyboard 파일이 빠져있다. 대신, 적용할 이미지 파일만 있다면, info.plist 파일에서 아주 쉽게 Launch Screen을 적용시킬 수 있는 방법을 제공해준다. 그런데, 이 방법은 제약이 있다. 위에서 볼 수 있듯이 개발자가 직접 설정할 수 있는 항목은 다음 항목이 전부이다. 단일 Image 파일 Background Color Safe area ignore 여부 Navigation/Tab bar 표시 여부 그래서 Text를 추가하고 싶거나, Image를 여러개 쓰는 등의 커스터마이징은 어렵다. 다행히도, UIKit 프로젝트에서 사용했던 스토리보드 파일 방식..

article thumbnail
[Xcode] SVG 활용과 “clip: empty path.” 에러 해결하기
iOS(macOS) 2023. 6. 21. 08:42

SVG 활용과 “clip: empty path.” 경고 해결하기 Xcode 프로젝트에서 사용할 수 있는 벡터 이미지는 PDF와 SVG가 있다. 종류 사용조건 파일 크기 PDF Xcode 6, iOS 8, Mac OS 10.9 이후 작음 SVG Xcode 12, iOS 13, iPad OS 13, Mac OS 10.15 가장 작음 출처 : https://kka7.tistory.com/381 그리고 프로젝트의 Assets에 벡터 이미지(SVG파일)를 추가해서 사용할 때, 함께 확인해 주면 좋은 설정들이 있다. 1️⃣ Attributes inspector의 [Resizing - Preserve Vector Data] 옵션 해당 옵션은 벡터 이미지를 생성하는 시점을 “빌드 타임”으로 할 것인지, “런타임”으로 ..

article thumbnail
[SwiftUI] Alert 여러개 사용할 때
iOS(macOS)/SwiftUI 2023. 2. 21. 13:44

[SwiftUI] 하나의 View에서 Alert을 여러 개 사용할 때 주의할 점. SwiftUI에서 Alert 을 사용하는 기본적인 방법은 다음과 같다. @State public var isShow1: Bool = false var body: some View { VStack(spacing: 30.0) { Button { self.isShow1.toggle() } label: { Text("Alert 1") } .alert(isPresented: $isShow1) { return Alert(title: Text("Alert1 show.")) } } .padding() } .alert()은 예제 코드처럼 반드시 Button에 할당해야 하는 건 아니고, View 요소에 padding() 달아주듯이 선언해주면..

article thumbnail
[iOS/Swift] NavigationController 뒤로가기 버튼 타이틀 수정하기
iOS(macOS)/Swift 2022. 10. 27. 21:55

NavigationController 뒤로 가기 버튼의 Title 수정하기 간단한 채팅 형식의 View를 가지는 앱을 만들어보는 도중, 아래 표시한 Back Button의 Title 을 지워야 하는 일이 생겼다. 처음엔 굉장히 간단하게 해결할 줄 알았는데, 헛다리를 짚는 바람에 꽤 시간을 오래 잡아먹었다 ㅜㅜ. 구글링을 통해 알아낸 방법은, navigationItem.backBarButtomItem 값을 새로운 UIBarButton 객체로 덮어 씌우라는 것이었다. // 뒤로가기 버튼에 적혀있는 title 지우기. self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) ..

article thumbnail
[iOS/Swift] Safe Area 크기 가져오기 (iOS15~)
iOS(macOS)/Swift 2022. 9. 14. 23:13

🧐 iPhone Safe Area 크기 가져오기 Safe area의 배경색을 지정하고 싶다면, 메인 View의 BackgroundColor를 지정해주면 된다. 하지만 아래 화면처럼 상/하단이 동시에 적용이 되어버린다. 나는 아래쪽만 적용하고 싶어서, UIView를 코드로 각각 생성해서 addSubview()로 추가해주는 방식으로 해결을 했다. (더 좋은 방법이 있는지는 찾아보는 중...) 그런데 노치가 없는 디자인의 아이폰은 하단 Safe Area가 없으므로, 현재 화면상의 Safe Area의 크기를 받아와서 처리해줘야 할 필요가 있다. 그래서 아이폰의 상/하단 Safe Area의 크기를 가져와 활용할 수 있는 코드를 찾아보았다. if #available(iOS 13.0, *) { let window =..

article thumbnail
[iOS/Xcode 13] Rename - Outlet 변수 이름 수정 방법
iOS(macOS)/Swift 2022. 8. 15. 01:00

🧐 Xcode - Rename 기능 사용법 Storyboard 또는 Xib에서 Outlet으로 변수를 가져오고 난 뒤에 변수명을 변경하고 싶다면 Rename 기능을 사용하는 것이 좋다. 📎 사용법 나의 경우, 위처럼 [Lab'el']을 [Lab'le']로 잘못 쓰는 경우가 종종 있다. 이때, swift 파일의 코드만 고친다면 해당 UI가 열릴 때 "this class is not key value coding-compliant for the key" 에러가 발생한다. 대략 변수명을 바꾼 것이 다른 메뉴에는 적용이 되지 않았다는 의미로, 기존 변수명을 찾을 수 없어서 발생하는 것이다. 이는 Connections Inspector에서 먼저 확인해볼 수 있다. swift 파일에서 변수명을 아무리 바꿔주어도, ..

article thumbnail
[Xcode] 파일 확장자 표시하기
iOS(macOS)/Swift 2022. 7. 13. 19:37

Xcode - 파일 확장자 표시하기 Xcode 13 버전부터 파일의 확장자를 기본적으로 숨기도록 변경되었다고 한다. 나는 확장자가 보여야 속이 편해서.. 확장자가 보이도록 설정을 다시 변경해서 사용하고 있다. [설정 방법] 1. [command + ,] 또는 좌측 상단 [Xcode] - [Preferences...] 클릭. 2. [General] 탭 - [File Extensions] 항목을 "Show All"로 변경. 곧바로 변경되는 것을 확인할 수 있다. [해결방법 출처] Xcode 파일확장자 보이게하는법 왼쪽부분에서 파일들 보면 파일확장자가 안나와있네요... 해결방법 알려주실분?? kin.naver.com

article thumbnail
[Xcode] 스토리 보드 - 첫 화면 설정하기 (Main interface)
iOS(macOS)/Swift 2022. 7. 13. 19:17

Xcode Story board - App이 launch 될 때 보여줄 첫 화면 설정하기 스토리 보드로 UI를 개발할 때, App이 launch 될 때 보여줄 첫 화면을 설정하는 방법은 두 가지가 있다. 하나는 "AppDelegate.swift" 파일에서 코드로 설정하는 방법이고, 나머지 하나는 Xcode에서 해당 앱의 프로젝트 설정 화면에서 설정을 해주는 방법이다. 1. 프로젝트 설정 화면 진입 2. [General] 클릭 3. [Deployment Info] - [Main Interface] 항목을 원하는 항목으로 설정.