Posts
All the articles I've posted.
-
I Broke My Arm, So I Made an App
• 4 min readA backstory of building an app with one-handed development
-
-
-
iOS 15에서 Date.FormatStyle을 사용하여 Swift에서 날짜 서식 지정하기
• 2 min readiOS 15의 새로운 Date.FormatStyle API를 사용한 날짜 포맷팅 방법
-
-
화면 상태에 따라서 View가 그리는 작업, Render
• 3 min readMVVM 패턴에서 View State 패턴을 도입하여 View Controller의 복잡도를 줄이는 방법
-
Raycast + Confetti로 Xcode 빌드 완료 효과 넣기
• 1 min readXcode 빌드 완료 시 Raycast의 Confetti 애니메이션으로 시각적 알림 효과 추가하기
-
이미 git으로 관리하고 있는 파일을 .gitignore에 추가했을 때, 변경해도 더 이상 추적하지 않도록 하는 방법
• 1 min read이미 Git에서 추적하고 있는 파일을 .gitignore에 추가한 후 추적을 중지하는 방법
-
2022 하반기 회고
• 4 min read벌써 2023년이 코앞이다. 하반기는 상반기에 비해서 시간이 빨리 지나간 것 같다. 상반기에는 일 위주로 작성했다면 이번 하반기에는 개인적인 일과 함께 회고를 작성했다.
-
레츠스위프트 2022 참석 후기
• 3 min read2019년 이후로 대면 컨퍼런스 참여하는 것은 이번 Let's Swift 행사가 처음이었다. 코로나로 인해 대면으로 컨퍼런스 참여하는 게 힘들었는데, 올해부터는 조금씩 소수 인원들만 초대해서 오프라인 컨퍼런스들이 조금씩 생기기 시작했다. 다행히 티켓팅 성공해서 이번 레츠스위프트 행...
-
듀얼 모니터 보다 싱글 모니터
• 3 min read아마도 많은 개발자들은 듀얼 모니터를 사용할 것이다. 하나의 모니터에서는 메신저나 개발에 필요한 화면을 띄우고, 다른 모니터로는 개발 프로그램을 열어서 사용하는 게 대부분일 것으로 보인다. 나도 예전에는 맥북프로 화면으로 메신저를 키고 연결된 모니터로 개발 프로그램을 키고 업무를 ...
-
코드 리뷰를 개선할 수 있는 Danger + SwiftLint Plugin
• 3 min read깃허브에서 PR을 올려서 코드 리뷰를 받고 있는데, 코드 리뷰를 하다 보면 코드 스타일 등에 대해서 놓친 경우가 있어서 코멘트를 다는 경우가 있다. 예를 들면 네이밍 컨벤션이 잘 지켜지지 않거나 자주 놓치는 접근 제한자 같은 것도 있다.
-
iOS 15에서 UIButton의 title이 Button으로 나타나는 현상 해결 방법
• 1 min readXib로 `UIButton`을 만들면 보통 `Type`을 `Custom`으로 해서 만드는 경우가 있다. 이미지를 넣어서 이미지만 있는 버튼을 그릴 때는 Title 값을 빈 문자열로 둔다. 하지만 어떻게 설정하냐에 따라서 iOS 15에서는 Title 값에 Button이 나타나는 경우...
-
HTML을 NSAttributedString으로 변환하기
• 1 min read화면에 노출하는 데이터 중에 문자열을 다루는 데이터가 많다. 그중에 특정 문자열의 텍스트 스타일을 입혀서 보여주는 경우가 있는데, 보통 HTML을 가지고 포맷하는 경우가 많다. 이때, swift에서 ```HTML```을 ```NSAttributedString```으로 변환해서 보여...
-
2022 상반기 회고
• 4 min read벌써 1년의 반이 지나갔다. 원래는 연말마다 1년 회고를 쓰려고 했는데, 요즘 주간 회고를 하고 있고 회고의 중요성을 많이 깨닫고 있어서, 늦게나마 상반기 회고를 작성하게 되었다.
-
SwiftUI에서 contentShape()을 이용해서 뷰를 탭하게 하는 방법
• 1 min read일반 `Text`나 `Image`을 사용하면 탭 제스처를 추가해서 탭 했을 때의 동작을 정의할 수 있다. 하지만 `VStack`이나 `HStack` 같은 container view에 제스처를 추가하면 생각처럼 잘 안될 때가 있다. 예를 들어, `HStack` 안에 `Image`와 ...
-
UserDefaults를 사용하는 방법
• 1 min readiOS에서는 사용자 설정 같이 정보량이 적은 데이터들을 앱이 설치되어 있는 동안 저장하여 사용할 수 있습니다. 바로 `UserDefaults`를 사용해서 저장하는 방법입니다. `UserDefaults`는 integer, boolean, string, array, dictionary...
-
Xcode Playground에서 attach failed invalid argument 에러 해결하는 방법
• 1 min readXcode Playground 생성해서 간단한 코드를 실행하려고 하는데, 아래와 같이 에러가 발생해서 실행이 안 되는 것을 발견했다.
-
-
UIPageViewController의 transitionStyle이 scroll일 경우, 크래시가 나는 버그 해결
• 1 min read이상하게 iOS 15에서 특정 페이지로 스크롤 할 때, 크래시가 발생하는 일이 생겼습니다. iOS 15 미만 기기에서는 발생하지 않았는데, iOS 15에서만 발생하여 iOS 15에서만 UIPageViewController가 내부적으로 특이하게 동작하는 것 같았습니다. 크래시가 발생...
-
SwiftUI에서 NavigationView 사용하기
• 2 min readSwiftUI에서 를 이용해서 유저가 navigate 하면서 여러 화면들을 이동할 수 있게 할 수 있습니다. 아래 예시 코드에서 `Text`를 `NavigationView`로 감쌌는데, 감싼 후에 `Text`가 아래로 이동한 것을 볼 수 있습니다.
-
2021년 회고
• 5 min read벌써 2021년이 끝나간다. 시간이 빨리 지나간 것처럼 올해는 정말 많은 일이 있었고 바쁘게 지나간 것 같다. 작년에는 3년의 개발 생활을 회고했는데, 올해는 개인적인 일들이랑 같이 회고하려고 한다.
-
SwiftUI에서 View에 Background 추가하기
• 1 min read스위프트UI에서 `background(_:alignment:)` view modifier를 이용해서 view에 background를 추가할 수 있습니다. 백그라운드는 추가하는 뷰의 크기만큼 만들어집니다.
-
스위프트 typealias 활용하기
• 2 min read스위프트에 있는 `typealias`는 기존에 존재하는 타입을 다른 이름으로 정의할 때 사용합니다. 상황에 따라서 기존에 있는 타입을 조금 더 적합한 이름으로 사용할 때 유용합니다. 예를 들어, 가격이 Int 타입인 상품 구조체struct가 있습니다.
-
How to launch app not immediately but launch after waiting
• 1 min readWe usually launch our app immediately when we build and run from Xcode. But there are sometimes we want to launch our app in a specific moment, for example t...
-
한글 들어간 url string을 인코딩하는 방법
• 1 min read문자열(이후 string)을 URL로 변환하여 사용하는 경우가 있는데, string 값에 한글 혹은 공백 같은 값이 들어갈 경우 nil 값이 반환된다. 퍼센트 인코딩(percentencoding)을 해야 올바른 url로 변환할 수 있는데, 스위프트 string에서 `addingPe...
-
스위프트에서 빌더 패턴 구현해보기
• 4 min read최근에 회사에서 커스텀 해서 사용하는 뷰를 사용해야 하는 경우가 생겼는데, 정해진 규칙이 있고 다양하게 조립하여 뷰를 그릴 수 있다고 판단하여 builder pattern(이하 빌더 패턴)으로 만들어 구현해 보았다. 회사 직원들도 잘 만들었다고 했고, 직접 사용하면서 불편한 점이 ...
-
Use Live View in Swift Playground
• 1 min readRecently I've been using Swift Playground app on iPad for studying Swift language. Personally, I think the playground app is one of the best apps for learnin...
-
Xcode 시뮬레이터 동영상 녹화하는 방법
• 1 min read시뮬레이터로 앱 테스트하다 보면 스크린샷을 찍어서 사진으로 사용할 수 있다. 하지만 동영상으로 녹화해서 공유하고 싶은 상황이 발생할 수 있는데, 예전에는 Quick Player 앱을 사용하는 등 다른 방법으로 녹화해서 하는 방법이 있다. 하지만 Xcode 시뮬레이터에서 직접 동영상...
-
-
개발하면서 겪은 경험들은 언젠가 도움이 될 것이다
• 2 min read며칠 전에 ""이라는 글을 읽으면서 많이 공감되었다. 최근에 비슷한 경험도 있어서 개발에 대한 나의 하나의 시각에 대해서 글을 쓰게 되었다. 나도 아직 연차가 많지 않다고 느끼지만, 조금이라도 내 경험을 통해서 신입 개발자들에게 응원이 되었으면 좋겠다.
-
Protocol extensions를 이용해서 기본값 제공하기
• 1 min read프로토콜에 정의한 메서드는 기본값을 가질 수 없다. 하지만 extension을 이용해서 프로토콜에 정의한 메서드 혹은 프로퍼티에 기본값을 제공할 수 있다.
-
WWDC21 Keynote에 대한 나의 생각들
• 3 min read1년 중 가장 즐거운 시간이 돌아왔다. 바로 애플이 개최하는 개발자 컨퍼런스인 WWDC21이다. 작년과 똑같이 온라인으로 진행해서 아쉽지만, 올해는 디지털 라운지, 코드 챌린지 등 다양한 활동을 진행한다. 이번 글은 아주 짧게 올해 발표한 내용에 대해서 내 생각들을 얘기하려고 한다.
-
How to show scrollbar over header or footer view
• 1 min readAfter revisiting my old codes, I found some useful code that helped a bug. Although this bug is solved over iOS 13, if your project deployment target is iOS ...
-
Cannot find 'Something' in scope
• 1 min readAfter updating some third party sdk version, there was a warning that can't find some library when building the project.
-
Enable swipe back and the bug
• 2 min readIn iOS, we can swipe back(left to right) to pop the view controller and navigate back. This is only available when the navigation bar is shown. If we want to...
-
How to hide navigation bar when scrolling
• 1 min readIn UINavigationController, there is a property called `hidesBarsOnSwipe` which hides its bars when scrolling or swipe down.
-
-
iOS 14부터 UILabel에서 한글 사용할 때 줄바꿈 이쁘게 하기 (lineBreakStrategy)
• 1 min readiOS에서 `UILabel`에 한글을 사용할 때, 줄 바꿈이 이쁘게 되지 않아 문제가 됐었는데, 찾다 보니 iOS 14에서부터 한글 사용할 때 줄 바꿈이 이쁘게 할 수 있는 설정이 있다고 해서 테스트해봤다.
-
macOS Big Sur에서 Xcode cache 지우는 방법
• 1 min readmacOS Big Sur에서 Xcode 캐시 혹은 미사용 iOS 시뮬레이터 버전들을 저장공간 관리 개발자 영역에서 쉽게 지울 수 있습니다.
-
jekyll 블로그 테마를 바꾼 이유
• 3 min read2019년 연말부터 거의 꾸준히 글 쓰려고 노력하고 있다. 기술 블로그 통해서 많은 것을 배워서 나도 비슷하게 그런 글을 쓰거나, 아니면 개인적으로 공부한 것을 기록하는 용도로 기술 블로그를 시작했다. 물론, 개인 포트폴리오 용도도 좀 있다. 성실하다는 것을 잘 나타나는 지표로 사...
-
Higher Order Functions: Filter, Map, Reduce
• 1 min readThere are some times we need to iterate an array or dictionary to collect or manipulate values. The easy way is using forin loop, get a value and add or mani...
-
How to Join an Array of Strings
• 1 min readUsing `joined()` method, we can merge an array of strings to a single string. We can add a separator too.
-
How to send emails from iOS 14
• 2 min readWith iOS 14, thirdparty app can be the default email app. This means we may have to support sending email with thirdparty apps. If the user is not using the ...
-
iOS 14부터 달라진 앱에서 이메일 보내는 방법
• 2 min readiOS 14에서는 기본 이메일 앱이 아닌 다른 서드파티 앱을 기본 이메일로 설정할 수 있습니다. 즉, 지메일, Outlook, Spark 등의 메일 앱을 이제 기본 이메일 앱으로 대체할 수 있습니다.
-
Get an Array of Dictionary's keys or values
• 1 min readIf you need an array of keys or values of a dictionary, Swift has an easy way to do it.
-
Fork한 Repository Sync하기 (동기화하기)
• 1 min read예전에는 리파지토리를 fork 해서 사용해 본 적이 드물었는데, 최근에는 fork 해서 개인 리파지토리에서 개발하다가 upstream 리파지토리로 반영하는 일이 잦아들었다. 그래서 개발하다 보면 최신 상태로 동기화 작업을 해야 하는데 맨날 까먹어서 글로 남기려고 한다.
-
Comparable enum
• 1 min readFrom Swift 5.3 and later, enums can be comparable. We can compare two cases from the enum with ``````, ```<``` and similar.
-
How to show build times in Xcode
• 1 min readYou can show how long the project build in Xcode by entering below command in ```Terminal.app```.
-
Multiline string literal tips
• 1 min readIn Swift, we can use multiline string literal to express several lines of string. Although, adding the new line character ` ` can create line break, it only...
-
주니어 개발자의 마지막, 미드레벨(mid-level) 개발자의 시작
• 7 min read이제 곧 4년 차, 미드 레벨(midlevel) 개발자가 될 예정이다. 생각보다 빠르게 시간이 지난 것 같다. 3년의 개발 생활을 회고하면서 그동안 나는 어떤 일을 했고, 앞으로는 어떤 방향으로 개발하고 싶은지 정리하고자 이 글을 쓰게 되었다.
-
How to round corners specifically on a UIView
• 1 min readTo round a corner on a UIView, you can set the layer's `cornerRadius` value. Simply use it like this:
-
How to create a view controller from xib
• 2 min readCreating a new view controller was easy. I've used to create a view controller from Storyboard, and instantiated in code. Although this way is easy, so many ...
-
-
나의 새로운 Mac 설정 목록 (Setup my personal Mac)
• 2 min read2023.01.20 업데이트: macOS Ventura 13.1 버전 기준으로 업데이트
-
WWDC20 Dub Dub Diary, Part 5 - Data Essentials in SwiftUI
• 3 min readThe last day of WWDC20, ended well with many amazing sessions. This day had an interesting session, which many of developers waited. For the last article of ...
-
WWDC20 Dub Dub Diary, Part 4 - Swift type inference, writing tests to fail
• 3 min readFor the fourth day of WWDC20, among great sessions there were two most interesting sessions about Swift language and testing. This article will talk about th...
-
WWDC20 Dub Dub Diary, Part 3 - Code-along, New Components, and build for iPad
• 3 min readMany sessions were also posted on the third day of WWDC20. In particular, sessions focused on game centers were concentrated, but they were not my interests ...
-
WWDC20 Dub Dub Diary, Part 2 - Widget, App clips, and SwiftUI
• 3 min readOn the second day of WWDC20, sessions were uploaded all at once and could be viewed immediately without waiting. Before this year, there were sessions by tim...
-
WWDC20 Dub Dub Diary, Part 1
• 5 min readFrom June 23 to June 26, WWDC20 was hosted online. I was lucky to win the last WWDC18 and WWDC19 event, and I went to America alone and enjoyed it. So I coul...
-
dyld: library not loaded error 해결하기
• 1 min read최근에 프로젝트에 TDD를 위해서 오픈소스 라이브러리 추가하여 작업 진행 중에 있습니다. ```RxTest``` 및 기타 라이브러리 추가하여 작업한 부분을 로컬 리파지토리에 병합하려고 하니 build 에러가 떴습니다. 다른 작업자분께서 작업한 부분이라 pull 받고 나서 에러가 떴...
-
git 강의 때 들었던 내용 정리
• 1 min read대학생 때 들었던 Git 강의 내용을 종이 필기로 남겼는데, 버리기는 아까워 블로그 포스트로 옮겼습니다. 부족한 점이 있으면 알려주시면 감사하겠습니다. :D
-
Add image to string in UILabel using NSTextAttachment
• 1 min readSometimes you need to add image to a string in a `UILabel`, but using `UIImageView` gets complicated and sometimes not efficient. But Apple provides a simple...
-
How to detect current text while texting in UITextField
• 1 min readWhile typing a text in `UITextField`, we could get the current text with `UITextFieldDelegate`'s Instance Method `textFieldDidChangeSelection(_:)`. But this ...
-
Ad Hoc 방식으로 iOS 앱 개발하는 방법
• 1 min read예전에 사내용으로 앱을 개발하여 배포했던 적이 있었다. 사내용으로 만들 때는 Enterprise 개발자 계정으로 Ad Hoc 또는 Enterprise 용으로 앱을 만들어 배포할 수 있는데, 그중에 Ad Hoc 방식으로 했던 것들을 정리해보았다. (개인적으로 보려고 작성해서 이해하기...
-
CocoaPods 팁 (설치부터 오류 해결)
• 2 min read앱 프로젝트 진행하다 보면, 오픈소스 라이브러리를 사용할 때가 있다. Xcode 프로젝트에 오픈소스 라이브러리를 설치 및 연결하는 방법이 CocoaPods, Carthage 또는 Swift Package Manager를 사용한다. 대표적으로 CocoaPods를 많이 사용하는데, C...
-
Info.plist Localization
• 1 min readRecently, one of our app got rejected by App Store Connect, because it needed to update `NSPhotoLibraryUsageDescription` content. There was not enough reason...
-
Add Refresh Control to Collection View
• 1 min readI've been currently rebuilding a project that I'm working on, and there were some UI issues when refreshing datas. `UIRefreshControl` was implied for pulltor...
-
How to deal with scroll view content size with storyboard
• 2 min read`UIScrollView` is very useful when presenting content that are larger than a single screen. I've been using it to support iPhone SE users or iPhone 8 users t...
-
Use Sets for unique
• 1 min readIf there is something you need to handle data unique, use Sets instead of Array.
-
깃허브(GitHub) 블로그 jekyll 테마 커스텀(custom)하기
• 4 min read어제 깃허브 블로그 구축하고 나서 꾸미려고 하니깐 뭔가 마음대로 꾸밀 수 없는 걸 느껴서, 테마를 가져와서 내 입맛대로 꾸밀 수 있을까 찾다가 jekyll theme을 fork 해서 커스텀할 수 있는 방법이 있다고 했다. 오늘 포스트는 테마를 조금 커스텀 할 수 있는 부분에 대한 ...
-
깃허브(GitHub) 블로그 구축하기
• 2 min read개발자들이라면 한 번이라도 봤을 만한 블로그 주소는 {username}.github.io 일 것이다. 개인적으로 깃허브 블로그 페이지 만들면서 고생해서 간단하고 최소한의 작업으로 구축하는 방법을 기록하기 위해 포스트를 쓰기로 했다.