전체 글 썸네일형 리스트형 [SwiftUI] Custom Calendar 기능 만들어보기 - 1 안녕하세요. 오늘은 간단한 캘린더 기능을 만들어보겠습니다. 구현하려는 기능의 요구사항은 다음과 같습니다. 년도, 월, 일을 달력 형태로 표시. 앞, 뒤 버튼을 통해 월을 변경 일정 정보를 달력에 표시 (노션처럼) 달력과 일정을 표시하기 전에, 먼저 필요한 코드를 작성하겠습니다. import SwiftUI /** 날짜 칸 표시를 위한 일자 정보 */ struct DateValue: Identifiable { var id = UUID().uuidString var day: Int var date: Date var isNotCurrentMonth: Bool = false } /** 일정 정보 */ struct Schedule: Decodable { var name: String var startDate: Da.. 더보기 [SwiftUI] 프로그래머스 과제관 (K-MOOC 강좌정보 서비스) 프로그래머스 과제관 (K-MOOC 강좌정보 서비스) 프로젝트 과제 요구사항 강좌 목록 조회 표시 내용: 강좌 이미지, 강좌 이름, 운영기관 이름, 운영기간 Pull To Refresh 구현 Infinite Scroll 구현 강좌 상세 화면 표시 내용: 강좌 이미지(large), 강좌 번호, 분류, 운영기관, 교수정보, 운영기간, 추가 상세정보 추가 상세정보는 웹뷰로 구현 제한사항 Apple 제공 framework 외에 pod/spm/carthago 등 외부 라이브러리 사용 불가 환경 XCode 13.3 테스트 환경 iPhone Simulator (iPhone 13) OS Target iOS 15.4 구현 내용 Views Launch Screen 을 제외한 모든 화면을 SwiftUI View 로 구현 강좌.. 더보기 [SwiftUI] UIImagePickerController를 이용한 카메라 사용 안녕하세요. 이번에는 SwiftUI에서 카메라를 사용하는 방법을 다뤄보겠습니다. 먼저 카메라를 사용하기 위해서는 사용자가 카메라 사용 권한을 허용해야합니다. //권한 여부 확인 let status = AVCaptureDevice.authorizationStatus(for: .video) if status == .authorized { //TODO: 카메라 접근 권한이 이미 허용 상태인 경우 } else if status == .notDetermined { AVCaptureDevice.requestAccess(for: .video) { accessGranted in DispatchQueue.main.async { if accessGranted { //TODO: 지금 카메라 접근 권한을 허용한 경우 } el.. 더보기 [Swift] 사진 가져오기 어찌저찌 살다보니 포스팅이 늦어졌네요ㅜㅜ 오늘은 사진 앨범 및 사진을 불러오는 방법을 알아보겠습니다. iOS든 안드로이드든 앱에서 사진을 불러오려면 먼저 사용자가 권한을 허용해주어야 합니다. import Photos ... let requiredAccessLevel = PHAccessLevel.readWrite let status = PHPhotoLibrary.authorizationStatus(for: requiredAccessLevel) if status == .authorized || status == .limited { //사진 앨범 및 사진 불러오기 viewModel.fetchAlbumList() viewModel.fetchData() } else if status == .notDetermine.. 더보기 [SwiftUI] "손쉬운 사용" 버튼 스타일 iOS 설정의 “손쉬운 사용 → 버튼 사용”을 설정했을 때, SwiftUI 의 기본 버튼 스타일을 사용하면 회색 배경이 생기는 문제가 발생합니다. "손쉬운 사용" 설정을 해도 기본 버튼 스타일이 그대로 있길 원한다면 아래처럼 커스텀 버튼 스타일을 지정해주어야 합니다. struct BasicButtonStyle: ButtonStyle { func makeBody(configuration: Configuration) -> some View { configuration.label .opacity(configuartion.isPressed ? 0.3 : 1) .animation(configuartion.isPressed ? .none : .easeInOut(duration: 0.15), value: config.. 더보기 [SwiftUI] NavigationLink 버그 SwiftUI 프로젝트를 개발할 때, NavigationView와 NavigationLink를 사용하여 화면 이동을 구현하곤 합니다. 문제는 화면이동 직후 다시 뒤로 돌아와버리는 버그가 발생하는 경우가 있다는 것입니다. 구글링도 해보고 이것저것 시도하면서 해결했던 방법들을 정리해보겠습니다. 1. 대부분의 경우 NavigationView에 .navigationViewStyle(.stack)을 설정해주면 해결됩니다. NavigationView { ... }.navigationViewStyle(.stack) //.navigationViewStyle(StackNavigationViewStyle()) 2. View에 NavigationLink가 하나만 있는 경우에도 종종 버그가 발생합니다. 이 때는 EmptyVi.. 더보기 [SwiftUI] Naver Map에 Custom Marker 띄우기 이번에는 SwiftUI Naver Map에 Custom Marker를 표시해주는 작업까지 해보겠습니다. 이를 구현하기 위해서 아래 순서대로 진행해보겠습니다. UIViewRepresentable을 이용하여 Naver Map 표시 Custom Marker로 사용할 SwiftUI View 작업 작업한 SwiftUI View를 UIView로 변환 변환한 UIVIew를 캡쳐하여 UIImage 생성 해당 UIImage를 Marker 이미지로 지정 SwiftUI에서 Naver Map을 사용하려면 UIViewRepresentable을 이용해야 합니다. 이 내용은 지난 포스팅에서 다루었으니, 여기를 참고해주세요! -> https://k00kie-dev.tistory.com/5 [SwiftUI] SwiftUI로 Naver.. 더보기 [SwiftUI] Custom Navigation Bar의 Back Swipe 액션 활성화하기 SwiftUI의 NavigationView를 사용하면 NavigationBar가 자동으로 생성됩니다. 그러나 기본 NavigationBar는 커스텀이 까다로운 부분이 있어서 종종 커스텀 바를 구현하곤 합니다. 기본 NavigationBar를 hidden시키고 커스텀 바를 구현하여 화면의 맨 위에 배치하는 것은 문제가 없지만, 이렇게 구현하는 경우에는 Back Swipe시 이전화면으로 돌아가는 액션도 같이 비활성화가 됩니다. extension UINavigationController: ObservableObject, UIGestureRecognizerDelegate { open override func viewDidLoad() { super.viewDidLoad() interactivePopGestureR.. 더보기 이전 1 2 다음