일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 추상화
- 하향식 접근
- 유연한 설계
- Swift#flatMap#map#Monad#함수형 프로그래밍#Optional
- 믹스인
- OOP
- 객체지향
- '기존 설계 재사용
- 서브 타이핑
- 알고리즘
- 합성
- 다형성
- 행동 호환성
- 의존성
- 유여난 설계
- 책임주도설계
- OCP
- 컴파일 타임 의존성
- 상속 조합 폭발적 증가
- 설계 재사용
- 명령-쿼리 분리
- iSP
- 메서드를 통한 해결
- dip
- 상속
- 일관성 있는 협력
- 런타임 의존성
- 객체 생성 사용 분리
- 오브젝트
- Apple # HIG #iOS15 #iOS14 #Human #Interface #Guidelines #Apple developer # Apple human interface guidelines
- Today
- Total
목록전체 글 (62)
도니의 iOS 프로그래밍 세상
1. 가능하다면, 생체 인증을 지원하여라 은행이나 보안 증권사는 이 방식을 채택하지 않기 때문에 불편한 점이 있는데, 애플의 시큐리티 가이드를 따르지 않기 때문에 발생하고 있다. 2. 인증 방식을 한 가지 방식으로 하게 한다. 여러 옵션을 줄 필요 없이, user name과 password를 사용하긴 하지만 face ID나 touch ID가 실패했을 때 한정한다. 3. 유저의 명백한 행동에 대해서만 인증을 시작해야 한다. 버튼을 탭 하는 등, 유저가 인증을 원하는 명백한 액션일 때 인증을 해야 한다. 4. 인증 방식을 항상 인지시켜 주어야 한다. "sigin in"이라는 글귀를 적는 것이 아니고 "sign in with Face ID"와 같이 용어를 제대로 써야 한다. 5. 일반적으로 앱 ..
Authentication 사용자에게 가치가 있는 무엇인가를 전달할 때, 앱에서는 인증을 요구해야한다. 사용자들에게 간단하고 안전한 로그인을 제공하기 위해서 sign in with Apple의 기능을 지원해야 한다. 이를 통해 사용자들은 다수의 암호를 기억할 필요 없이 아이클라우드의 키체인을 통한 편리한 로그인 경험을 겪게 된다. 1. 가능한 sign-in하는 것을 지연시켜야 한다. 등가교환 법칙에 따라 사용자에게 큰 가치를 주기 전까지 sign-in을 강제로 해서는 안된다. 이앱에서 유용한 가치를 사용하기 전에 회원가입부터 하라고 한다면 사람들은 포기하기 마련이다. 앱과의 사랑에 빠질수 있는 시간을 주어야 한다. 왜냐하면 전자상거래의 앱의 사용자가 다음에 돌아올 보장이 없기 때문에 회원가입을 유도하..
1. 필요하다면 오디오 볼륨을 조정하는데, overall 볼륨을 올려서는 안된다. 앱에서 내부적인 볼륨을 가지고 있는데, 이것이 시스템 볼륨을 건드리지 않고 따로 동작된다. 이때 최종적인 결과는 시스템 볼륨에 의해서 내부 볼륨이 통제된다. 앱에서 10의 볼륨을 갖고, 시스템에서 1의 볼륨을 갖는다면 1에대한 10의 볼륨이 나오는 것이다. 2. 적당할 때, rerouting을 하는것을 허용해라. 자동차 라디오, 애플 티비등 다른 오디오 아웃풋을 통해서 현재 기기에서 듣고 있던 노래가 rerouting된다. 3. 오디오 조절 시 시스템 지원 볼륨뷰를 사용하는 것이 좋다. 이뷰는 커스터마이저블 하고, 볼륨 레벨 슬라이더도 가지고, 어디로 오디를 내보낼지도 가지고 있기에 개발자라면 MPVolumeView..
뱃사람들의 이정표 사람들은 앱의 내비게이션이 그들의 예상을 벗어나지 않으면 인지하지 못한다. 이것은 숨 막히기 전까지 공기의 존재를 느끼지 못하는 것과 비슷하다. 그리하여 내비게이션의 존재는 공기처럼 자연스러워야 하고 내비게이션 자체가 사용자의 포커스를 가져가선 안된다. 결국 내비게이션의 역할은 사용자가 원하는 정보까지 접근하는 데 도움을 주는 것이다. 내비게이션의 3가지 종류 1. 계층적 내비게이션 데이터가 계층화되어있기에, 사용자는 계층화된 데이터를 타고 원하는 정보에 도달한다. 2. 평면적 내비게이션 여러 과목의 퀴즈 시험과 같이 연관성이 없는 것 들이 탭에 들어있다. 서로 다른 콘텍스트가 탭에 들어 있기 때문에 사이즈가 커진다. 그래서 평면적은 서로 다른 콘텍스트 간에 카테고리를 묶어내기 ..
1. 이치에 맞게 Modal을 사용해라 현재 contex와 다르게 집중을 요하는 순간에 modal을 사용한다. 모달을 사용하면 task을 단계로 나누기에 좋기 때문에 로그인을 하는데 많이 사용된다. 이때 signup을 하고 난 뒤, tab이 나오는 구조로 앱이 구성되지 않고 전체 UI에서 main이 존재하고 로그인 화면을 Modal이 덮는 구조이다. 로그인은 한번 signup을 하고 나면 다시 로그인할 필요가 없어야 한다. 왜냐하면 아이폰은 개인적인 장치로 id와 password를 기억하고 있어도 되고 잠금을 푸는 과정에서 생체 인증의 과정을 거치기 때문이다. Modal은 사용자의 경험을 방해하는 요소이기 때문에 확실한 장점이 있을 때 사용해야 한다는 사실을 명심해야 한다. 2. alert는 핵심적인..
전자시계에서 Mode 버튼을 누를 시, 화면이 현재 시각이 나오거나 날짜, 스톱워치, 알람에 대한 정보가 나오기도 한다. 이렇게 네 개의 모드가 전자시계를 공유하고 있는 것처럼 앱에도 모드란 게 존재한다. 이때 앱에서는 유저의 현재 context로부터 벗어나는 임시 모드를 제공한다. 매일 앱에서 메일 답장 모드로 들어간 상태에서 보내기 혹은 취소를 누른다면, 메일함을 읽을 수 있는 메일 읽기 모드로 변한다. 그래서 Modality는 앱 안네 여러 모드가 있다는 것을 전제로 하며, 사용목적으로는 task에 집중하거나 중요 정보가 있는 경우 경고를 하기 위해서 사용한다. 앱 내부 특정 상황에 쓰일 수 있는 alert, Activity view, Action sheet이 제공되며 이때 Activity ..
콘텐츠가 로딩될 때, 정지되거나 빈 스크린은 앱이 멈춘 것처럼 보여 사용자들에게 혼란을 야기하고 결과적으로 앱을 더 이상 사용하지 않도록 만들게 된다. 1. 로딩 중 일 땐 명백하게 보여줘라 Progress 바에서 언제든지 중지될 수 있도록 해야 하고, 로딩 중이라는 사실을 확실하게 알려주고 진행 상황을 보여줘야 한다. 2. 최대한 가능한 콘텐츠를 보여줘라 스크린을 즉시 보여주고, 실제 콘텐츠는 아니지만 placeholder를 통해 아직 사용하지 못하는 곳을 확인시켜 준다. context를 들어가서 인지하는 시간이 10초가 걸리는 만큼 로딩이 안됐을 때, 아무것도 보여주지 않는 것이 아니라 로딩 중 말고 다른 부분을 살펴볼 수 있도록 기회를 주는 것이다. 3. 로딩 타임을 느끼지 못하도록 재미나 ..
승선이라는 뜻을 가지고 있으며, iOS에서는 온보딩으로 만드는 경우가 많다. 온보딩이란 앱을 실행했을 때 여러 복잡한 메뉴들이 존재하고 이를 설명하는 것을 말한다. 앱을 실행했을 때 매뉴얼로서, 사용자들이 앱을 즐길 수 있도록 하는 것에 집중하는 것이지 set up을 의미하는 것이 아니다. 그리하여 setup이나 licensing detail에 집중하는 것이 아닌, 사용자 배움의 즐거움에 집중한다. 1. 액션을 빠르게 해라. 시스템의 런치 스크린을 리플레이스하고 나면, 바로 사용자가 앱을 사용하며 즐길 수 있도록 한다. 만약 튜토리얼이나 인트로 시퀀스가 필요하다면 스킵 할 수 있어야 하고, 다시 돌아온 사용자에게 자동으로 보여주지 않도록 해야 한다. 이때 첫 단계에서, 모든 설명을 전부 하는 것이 아..
Laungching 앱을 실행할 땐, 반드시 빠르고 매끄러워야 한다. 만약 splash image를 사용한다면 그때부터 사용자는 seam(이음매)을 느낌으로써 앱 사용이 더디다고 생각할 것이다. 또한 사용자가 앱을 실행할 때 그전에 마지막으로 사용했던 이미지에서 시작하지 못하고 처음 이미지에서 실행되는 것 또한 같은 경험을 선사한다. UI application deligate 할 때, 앱 시동의 케이스는 여러 가지로 존재한다. 예를 들자면 아이폰을 탭 해서 실행시키는 경우, 노티 피케의 션을 통해서 들어오는 경우, 다른 앱이 불러서 들어오는 경우 등이 존재하기 때문에 앱이 런칭될때 다양한 경우에 어떻게 동작할지 설정한다. 또한 작동 중인 앱이 백그라운드로 동작할 때, 메모리 부족으로 인하여 백그라..
1. UIKIT common interface element를 정의한 framework이며 기본적인 UI 요소를 제공한다. 미리 사전해 구현해 둔 기능을 통해 개발자가 구현하지 않게 도와주는 것뿐만 아니라, ios update 시 자동으로 업데이트된다. high-level customization이 가능하지만, 처음으로 앱을 개발할 때는 권유되지 않는데 그 이유는 ios update로 적용되는 기능적인 부분들이 자동적으로 적용되지 않기 때문에 또 다른 방식으로 구현해야 하기 때문이다. 그리하여 시스템 툴바를 쓰지 않고 뷰를 사용하는 방식은 주의를 요구하며, 결국 시스템이 제공하는 UI를 잘 활용해야 한다. 1) Bar 앱 내부적으로 사용자가 어디에 위치한지 알려주거나, 정보를 제공해 주는 기능을 한다..