일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 뷰컨
- 스위프트
- indicator style
- 스크롤 인디케이터
- viewcontroller
- FeedbackGenerator
- viewDidAppear
- 알뜰폰
- 아이폰
- scroll indicator
- 깃헙
- IOS
- 우아한 앱종료
- 런치 스크린
- 스토리보드
- swift haptic
- viewDidDisappear
- loadView
- refreshControl
- 레이아웃 사이클
- 이니셜라이저
- SWIFT
- 세븐모바일
- graceful termination
- do try catch
- exit()
- without Storyboard
- git
- 클로저
- viewWillDisappear
- Today
- Total
목록분류 전체보기 (20)
예거's Bicycle for the mind
해당 게시글은 글또 9기 활동, 유데미로 무료로 제공받은 강의에 대한 리뷰입니다. 어느새 2년이 넘는 시간동안 참여하고 있는 개발자 글쓰기 커뮤니티 글또에서 이번 9기엔 와 콜라보를 해서 강의 하나를 무료로 수강할 기회를 얻었다. 여러 강의 중에 2개를 선택할 수 있었는데, 처음에 딱 봤을 때 눈에 들어온 것은 였다.몇 년 전 생각이 났다. 2021년도에 다니던 직장 퇴사하고 개발 공부를 시작했을 때, 그 즉시 필요성을 느낀 게 영어 공부였다. 일단 Swift 개발 문서나 오픈소스 README 만 보더라도 99% 이상 영어로 쓰여있다.물론 우클릭해서 한글 번역으로 바꾼 뒤 읽어도 문제는 없지만, 가끔은 더 정확한 번역이나 늬앙스를 읽어야 해서 영어 원문으로 읽을 필요가 있었다. 이때 어려운 단어들이 꽤..
안녕하세요. 예거입니다. 😄 얼마 전에 종료된 프로젝트에서 처음으로 당겨서 새로고침(Pull to Refresh) 기능을 구현해봤습니다. 스크롤 뷰(ScrollView) 리스트 형태를 갖는 화면을 간단한 제스처 만으로 새로고침 할 수 있는 기능인데요. 당근마켓이나 인스타그램에서도 습관처럼 사용하는 기술입니다. 오히려 너무 자연스러워서, 없으면 어색할 정도죠. iOS 에서는 이 기능을 어떻게 구현하나 싶었는데, 다행히도(?) 간편하게 구현할 수 있도록 클래스나 프로퍼티들이 준비되어 있더라구요. 1️⃣ UIRefreshControl 클래스와 구현 코드 UIRefreshControl 라는 클래스를 사용하면 됩니다. 개요(Overview)를 짧게 읽어보죠. 우선, UIScrollView 클래스를 포함해서 이 클..
iOS를 공부하면서, 늘 스토리보드를 위주로 UI를 구성하다가, 처음으로 스토리보드 없이 UI 화면을 만들어야 하는 과제가 주어졌습니다. 구글링을 하며 여러 블로그를 참고했는데, 정확하지 않은 정보가 많아 시행착오를 꽤 겪었습니다. 이번 글에서는 스토리보드 없이 UI를 만드는 구체적인 프로세스와 시행착오를 공유해보고자 합니다. 1️⃣ 먼저, Main.storyboard 파일 삭제하기 주제와 관련해서 구글링을 해보면 Main.storyboard 파일을 삭제해야 한다는 내용은 공통적으로 나옵니다. 긴 말이 필요 없겠죠. 디렉토리에서 Move to Trash 해줍니다. 2️⃣ info.plist 수정하기 그다음 순서는 프로젝트의 메타 데이터가 담긴 info.plist 파일을 수정하는 것인데요. 개발 진행 상황..
스크롤 뷰와 스크롤 인디케이터 아마 우리 모두는 하루에도 수백 번씩 스크롤 뷰를 사용할 거라 확신합니다. 😄 마우스의 휠을 통해 드르륵, 드르륵. 또는 손가락을 이용해서 휙휙 화면을 위, 아래로 움직이는데요. 우리가 봐야 하는 콘텐츠는 화면의 크기보다 더 길거나 넓을 때, 스크롤 뷰를 활용합니다. 그리고 '스크롤'이라는 행위를 할 때, 사용자에게 스크롤 뷰에서의 사용자가 보고 있는 상대적인 위치를 나타내는 UI 요소가 바로 스크롤 인디케이터(Scroll Indicator)입니다. 기본(default) 스크롤 인디케이터의 문제점 프로젝트를 진행하며, 숫자가 쌓이다가 화면을 넘어가면 스크롤 뷰가 활성화되는 기능을 넣었어요. 근데 스크롤 뷰에 기본적으로 탑재되어 있는 default 스크롤 인디케이터가 제가 만..
마지막 catch 의 역할 iOS 앱 개발을 하다보면, 발생 가능한 에러를 정의하는 열거형과 에러를 발생시킬 가능성이 있는 메서드를 만들게 됩니다. 에러를 던질 수 있는(throws) 메서드는 호출부에서 do-try-catch 문으로 처리해줄 수 있는데요, 이때 직접 정의한 에러 케이스를 전부 다루더라도, exhaustive 하지 않다는 컴파일 에러가 뜨는 경우가 있습니다. exhaustive 는 "하나도 빠뜨리는 것 없이 철저한" 이라는 뜻의 형용사인데요. 스위프트에서 switch 문을 쓰다 보면, 자주 보실 수 있는 에러죠. 위의 예시 코드처럼, do-try-catch 문에서 모든 에러 타입을 catch 로 붙잡아주더라도, 마지막에 매치되는 에러가 없는 catch 절이 필요한데요. 마지막 catch ..
아이폰의 장점은 무엇일까요? 아이폰은 왜 사용할까요? 많은 사람들은 애플의 생태계, 연결성, 그리고 UX 를 꼽습니다. UX 는 User Experience, 즉 사용자의 경험이라는, 굉장히 추상적인 가치입니다. 이렇게 추상적인 사용자 경험을 끌어올리는 방법은 여러 가지가 있겠지만 제가 아이폰을 처음 구입했을 때 가장 놀라웠던 점이 바로 햅틱 피드백이었거든요. 햅틱이라고 하면, '연아 햅틱' 을 떠올리시는 분도 있을 것 같습니다. (제가 그랬거든요.) 햅틱이라는 말이 어려우면, '진동'이라고 하면 이해가 쉽습니다. 햅틱(Haptic)이 뭘까? 위키백과에서 확인한 햅틱의 사전적 정의는 다음과 같습니다. 햅틱(haptic)은 사용자에게 힘, 진동, 모션을 적용함으로써 터치의 느낌을 구현하는 기술 그리고 이 ..
[ tracking connection ] -u 옵션은 --set-upstream 의 줄임말. tracking connection 을 설정하는 옵션입니다. 이게 설정됐을 때, Remote 레포의 브랜치를 Local 레포 브랜치의 업스트림(Upstream) 브랜치 라고 부릅니다. -u 옵션을 통해 tracking connection 을 설정하면 git push/pull 과 같이 간단한 명령어로 자동으로 Remote 레포와 정보를 교환할 수 있습니다. [ git ] git add . -> working directory 내의 수정사항이 있는 모든 파일들을 staging area 에 올림 git add [디렉토리명 or 파일 이름] -> 수정사항이 있는 해당 디렉토리 또는 특정 파일을 staging area ..
화면이 메모리에 처음 올라가고(로딩), 사용자에게 시각적으로 보여지고, 그리고 다음 화면을 위해 자리를 양보하며 사라지고, 메모리에서 아예 해제되기도 하는 일련의 과정을 UIViewController Life Cycle 이라고 부릅니다. 풀네임을 자세히 보면, 그냥 ViewController 가 아니라 UIViewController 인 것을 확인할 수 있는데 그 이유는 생명주기의 모든 메서드는 애플이 제공하는 UIKit 내의 UIViewController 라는 클래스 안에 이미 정의가 되어있기 때문입니다. 우리는 UIViewController 클래스를 상속받은 뷰컨에서, 생명주기 메서드를 override 한 뒤에 사용하면 됩니다. 다시, UIViewController 클래스의 정의부 코드를 펼쳐놓고 살펴..