Joohee Kim's Blog
취소

SwiftUI에서 contentShape()을 이용해서 뷰를 탭하게 하는 방법

일반 Text나 Image을 사용하면 탭 제스처를 추가해서 탭 했을 때의 동작을 정의할 수 있다. 하지만 VStack이나 HStack 같은 container view에 제스처를 추가하면 생각처럼 잘 안될 때가 있다. 예를 들어, HStack 안에 Image와 Text 사이에 Spacer를 넣었다면, Spacer 영역을 탭 했을 때, 원하는 탭 제스처가...

UserDefaults를 사용하는 방법

iOS에서는 사용자 설정 같이 정보량이 적은 데이터들을 앱이 설치되어 있는 동안 저장하여 사용할 수 있습니다. 바로 UserDefaults를 사용해서 저장하는 방법입니다. UserDefaults는 integer, boolean, string, array, dictionary, URL 같은 타입들을 저장할 수 있습니다. let defaults = Us...

Xcode Playground에서 attach failed invalid argument 에러 해결하는 방법

Xcode Playground 생성해서 간단한 코드를 실행하려고 하는데, 아래와 같이 에러가 발생해서 실행이 안 되는 것을 발견했다. Failed to launch process. Failed to attach to stub for playground execution: error: attach failed ((os/kern) invalid a...

문자열 배열을 하나의 문자열로 결합하는 방법

스위프트에서 문자열 배열을 하나의 문자열로 결합하는 간단한 메소드가 있습니다. 바로 joined()입니다. let array = ["고양이", "강아지", "햄스터"] let joined = array.joined(separator: ", ") print(joined) // Prints "고양이, 강아지, 햄스터" separator 파라미터를 이...

Custom URL Scheme를 시뮬레이터에서 빠르게 여는 방법

해당 글은 Quick way to open a Custom URL Scheme in iOS Simulator 참고하여 작성한 글입니다. 애플에서 커스텀 URL 스키마(이하 custom URL scheme)를 이용하여 앱의 특정 페이지를 여는 방법을 제공합니다. 특정 custom URL scheme을 탭 하면 앱이 열리게 되는데, 테스트하는 방...

UIPageViewController의 transitionStyle이 scroll일 경우, 크래시가 나는 버그 해결

이상하게 iOS 15에서 특정 페이지로 스크롤 할 때, 크래시가 발생하는 일이 생겼습니다. iOS 15 미만 기기에서는 발생하지 않았는데, iOS 15에서만 발생하여 iOS 15에서만 UIPageViewController가 내부적으로 특이하게 동작하는 것 같았습니다. 크래시가 발생하는 부분은 아래 코드 부분이었습니다. setViewController...

SwiftUI에서 NavigationView 사용하기

NavigationView SwiftUI에서 NavigationView를 이용해서 유저가 navigate 하면서 여러 화면들을 이동할 수 있게 할 수 있습니다. 아래 예시 코드에서 Text를 NavigationView로 감쌌는데, 감싼 후에 Text가 아래로 이동한 것을 볼 수 있습니다. struct ContentView: View { va...

2021년 회고

벌써 2021년이 끝나간다. 시간이 빨리 지나간 것처럼 올해는 정말 많은 일이 있었고 바쁘게 지나간 것 같다. 작년에는 3년의 개발 생활을 회고했는데, 올해는 개인적인 일들이랑 같이 회고하려고 한다. 일과 개발, 스터디 회사 일은 늘 바쁘다. 빠르게 성장하고 더 높게 뛰기 위해 급하게 혹은 빠르게 개발해야 하는 일들이 있었다. 지금은 스쿼드 체계로 ...

SwiftUI에서 View에 Background 추가하기

View에 Background 더하기 스위프트UI에서 background(_:alignment:) view modifier를 이용해서 view에 background를 추가할 수 있습니다. 백그라운드는 추가하는 뷰의 크기만큼 만들어집니다. struct ContentView: View { let background = Color.blue ...

스위프트 typealias 활용하기

스위프트에 있는 typealias는 기존에 존재하는 타입을 다른 이름으로 정의할 때 사용합니다. 상황에 따라서 기존에 있는 타입을 조금 더 적합한 이름으로 사용할 때 유용합니다. 예를 들어, 가격이 Int 타입인 상품 구조체struct가 있습니다. struct Product { let price: Int } Int 타입으로 사용해도 괜찮으...