목록IOS (25)
Haru's 개발 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bEbJl5/btr0VLgDkHp/Vms6Xup3xL1FgJ51IEuSUK/img.png)
Objective-C 공부하는 이유 오픈 소스들을 살펴보면 옵젝씨를 사용하는 곳이 많다. Unity를 iOS에 연동하여 사용하는데 옵젝씨 코드였다. 회사에 들어가면 옵젝씨 코드를 볼수도 있다(주로 리펙토링) Swift랑 옵젝씨를 다 할 줄알면 앞으로가 든든해진다. 1. 프로젝트 생성하기 2. 생성된 파일 체크하기 이미지를 확인해보면 헤더 파일(.h)을 발견할 수 있다. -> 마치 C언어 느낌 -> Objective-C는 C언어를 확장한 언어이다! 따라서 Objective-C에서는 C언어의 모든 문법을 사용 가능 Objective-C는 C언어를 객체지향형으로 확장한 언어이다. 3. ViewController.h를 살펴보기 #import @interface ViewController : UIViewContr..
App의 모델 데이터와 뷰 간의 connection을 만들어 주는 3가지 property wrapper type을 제공한다. ObservedObject EnvironmentObject StateObject StateObject의 개념 관찰 가능한 개체를 인스턴스화하는 속성 래퍼 유형입니다. StateObject의 필요성 SwiftUI는 언제든지 다시 뷰를 생성이 가능하다. -> 주어진 inputs을 가지고 뷰를 이니셜라이징하면 동일한 뷰가 생성이 된다. -> 뷰 안에서 ObservedObject를 만드는 것은 안전하지 않다. 대신에 SwiftUI는 이 목적을 위해 StateObject를 제공해준다. StateObject를 사용하면 뷰안에서 안전하게 ObservedObject 인스턴스를 만들 수 있다. c..
어플리케이션 설정을 저장하는데 쓰는 UserDefaults 객체이다 State가 바뀔때 State로 UserDefaults를 사용할 것이면 약간의 전처리가 필요하다. 1. UserDefaults propertyWrapper import Foundation import Combine @propertyWrapper struct UserDefault { let key: String let defaultValue: T init(_ key: String, defaultValue: T) { self.key = key self.defaultValue = defaultValue } var wrappedValue: T { get { return UserDefaults.standard.object(forKey: key) ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqXFO9/btrD2HgQJ8T/Vh7AMhLQxbcqwpXkda3p5k/img.png)
Apple Pencil and Scribble Apple Pencil은 메모 작성, 스케치, 페인팅, 문서 표시 등을 할 때 픽셀 수준의 정밀도를 제공하는 iPad 앱을 위한 다재다능하고 직관적인 도구입니다. iPadOS 14 및 이후 모델에서 Scribble은 Apple Pencil을 사용하여 빠르고 개인적인 기기 내 필기 인식 을 통해 모든 텍스트 필드에 텍스트를 입력할 수 있습니다 . 예상되는 동작을 지원합니다. Apple Pencil은 그리기, 필기 및 마킹을 쉽고 자연스럽게 하도록 설계되었으며 포인터 또는 UI 상호 작용 도구로도 사용됩니다. 사람들이 기대하는 Apple Pencil 동작을 활성화하는 것 외에도 예기치 않은 상호 작용도 지원하는 것이 좋습니다. 예를 들어 앱에서 사람들이 문서 여..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bfIvpo/btrD3xrj6cZ/Y4WtRH2XcuGLFqHnIhhnHk/img.png)
Accounts 앱의 핵심 기능에 필요한 경우에만 사람들에게 계정을 만들도록 요청하십시오. 그렇지 않으면 사람들이 계정 생성 없이 앱을 즐길 수 있게 합니다. 앱에 계정이 필요한 경우 Apple로 로그인을 사용하여 사람들에게 신뢰할 수 있는 일관된 로그인 경험을 제공하고 여러 계정과 암호를 기억하지 않아도 되는 편리함을 고려하십시오. 계정 생성의 이점과 가입 방법을 설명합니다. 앱에 계정이 필요한 경우 요구 사항의 이유와 이점에 대한 간략하고 친근한 설명을 작성하고 로그인 화면에 이 메시지를 표시합니다. 로그인을 최대한 오래 미루세요. 사람들은 유용한 작업을 수행하기 전에 강제로 로그인해야 하는 경우 앱을 포기하는 경우가 많습니다. 이러한 상황을 방지하려면 사람들에게 앱에 대한 약속을 하도록 요청하기 전..
3D Touch 지원되는 장치에서 사람들은 터치스크린에 다양한 수준의 압력을 가하여 추가 기능에 액세스할 수 있습니다. 앱은 상황에 맞는 표시 (또는 Peek 및 Pop 지원)하여 항목과 항목에 영향을 미치는 데 사용할 수 있는 작업을 표시하여 응답할 수 있습니다. iOS 13 이상을 실행하는 기기에서 사람들은 기기가 3D 터치를 지원하는지 여부에 관계없이 길게 터치 제스처를 사용하여 상황에 맞는 메뉴를 열 수 있습니다. 3D Touch 장치에서 제스처는 context 메뉴를 더 빨리 표시할 수 있습니다. Home Screen Interaction iOS 13 이상을 실행하는 기기의 홈 화면에서 사람들이 앱 아이콘을 길게 터치하면 앱이 컨텍스트 메뉴를 표시할 수 있습니다(3D Touch 기기에서는 아이콘..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oLepq/btrDjGqKw9K/kn1zEoqXNx7W7V5o2iiNv0/img.png)
일부 앱은 설정 또는 구성을 선택하는 방법을 제공해야 할 수 있지만 대부분의 앱은 그렇게 하는 것을 피하거나 지연할 수 있습니다. 성공적인 앱은 대부분의 사람들에게 즉시 잘 작동하는 동시에 경험을 조정할 수 있는 몇 가지 편리한 방법을 제공합니다. 대부분의 사람들이 기대하는 방식으로 앱이 작동하도록 디자인하면 설정의 필요성이 줄어듭니다. 시스템에서 무엇을 할 수 있는지 추론합니다. 사용자, 장치 또는 환경에 대한 정보가 필요한 경우 사용자에게 묻지 말고 가능하면 시스템에 쿼리하십시오. 예를 들어, 지역 옵션을 제시할 수 있도록 다른 사람에게 우편 번호를 입력하도록 요청하는 대신 현재 위치를 사용할 수 있는 권한을 요청하십시오. 사용자가 자신의 정보에 대한 액세스를 거부하는 경우 수동 입력으로 정상적으로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TOqf4/btrDjFSUTH1/WSgLiFey01xB0BM3OFv2A1/img.png)
Navigation 사람들은 그것이 그들의 기대를 충족시키기 전까지 앱의 네비게이션을 알아차리지 못한다. 개발자는 네비게이션에 주의를 끌지 않으면서 앱의 구조와 목적을 도와주는 방식으로 네비게이션을 구현해야한다. 계층적 네비게이션 (Hierarchical Navigation) 목적 화면에 도닥할 때 까지 한 화면 당 하나의 선택만 있도록 해라. 다른 목적지로 가기 위해서는 단계를 되돌리거나 처음부터 다시 시작하여 다른 선택을 해야한다. 설정 앱과 메일 앱은 계층적 네비게이션 스타일을 사용한다. 플랫 네비게이션 (Flat Navigation) 여러 콘텐츠 범위 사이에서 전환한다. 뮤직, 앱 스토어가 플랫 네비게이션 스타일을 이용한다. 컨텐츠 중심 혹은 경험 중심 네비게이션 컨텐츠 사이에서 자유롭게 움직이거..