일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 세븐모바일
- FeedbackGenerator
- do try catch
- 스크롤 인디케이터
- 이니셜라이저
- viewWillDisappear
- scroll indicator
- loadView
- 깃헙
- viewDidAppear
- 런치 스크린
- IOS
- 알뜰폰
- swift haptic
- 클로저
- 뷰컨
- indicator style
- without Storyboard
- refreshControl
- graceful termination
- 레이아웃 사이클
- viewcontroller
- viewDidDisappear
- 아이폰
- exit()
- 스위프트
- 우아한 앱종료
- SWIFT
- 스토리보드
- git
- Today
- Total
목록iOS & Swift (15)
예거's Bicycle for the mind
안녕하세요. 예거입니다. 😄 얼마 전에 종료된 프로젝트에서 처음으로 당겨서 새로고침(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)은 사용자에게 힘, 진동, 모션을 적용함으로써 터치의 느낌을 구현하는 기술 그리고 이 ..
화면이 메모리에 처음 올라가고(로딩), 사용자에게 시각적으로 보여지고, 그리고 다음 화면을 위해 자리를 양보하며 사라지고, 메모리에서 아예 해제되기도 하는 일련의 과정을 UIViewController Life Cycle 이라고 부릅니다. 풀네임을 자세히 보면, 그냥 ViewController 가 아니라 UIViewController 인 것을 확인할 수 있는데 그 이유는 생명주기의 모든 메서드는 애플이 제공하는 UIKit 내의 UIViewController 라는 클래스 안에 이미 정의가 되어있기 때문입니다. 우리는 UIViewController 클래스를 상속받은 뷰컨에서, 생명주기 메서드를 override 한 뒤에 사용하면 됩니다. 다시, UIViewController 클래스의 정의부 코드를 펼쳐놓고 살펴..
직전 글에서 UIView 를 다뤘으니, 이번 글에선 UIViewController 의 이니셜라이저에 대해 공부해보려고 합니다. UIViewController 클래스가 가진 2개의 이니셜라이저에 대해 알아보자 애플이 만들어둔 UIKit 내의 UIViewController 클래스 정의부에서 이니셜라이저와 생명주기 관련 메서드만 요약해봤어요. open class UIViewController: UIResponder, NSCoding, UIAppearanceContainer, UITraitEnvironment, UIContentContainer, UIFocusEnvironment { public init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle..
앱은 하나 이상의 화면으로 이루어져 있습니다. 화면에서 다른 화면으로 이동할 수 있고, 또 되돌아올 수도 있어요. View controllers are the foundation of your app’s internal structure. Every app has at least one view controller, and most apps have several. 앱의 모든 화면은 각자의 ViewController(이하 "뷰컨"), 그리고 생명주기(Life Cycle)를 갖습니다. 화면이 메모리에 처음 올라가고(로딩), 사용자에게 시각적으로 보여지고, 그리고 다음 화면을 위해 자리를 양보하며 사라지고, 메모리에서 아예 해제되기도 하는 일련의 과정을 UIViewController Life Cycle 이라..