본문 바로가기

분류 전체보기

(345)
156. Auto Layout Interface Builder Technique Auto Layout Interface Builder Technique 새 프로젝트를 생성한 뒤 위치와 크기를 조금 변경했다. 지금 상태에선 어떠한 제약도 추가하지 않았지만, 앱을 실행하면 현재 Frame을 기반으로 자동으로 제약이 추가된다. 이러한 제약을 '프로토타이핑 제약 (Prototyping Constraints)'라고 부른다. 이름 그대로 실제 앱에서 사용하기에 적합하지 않고, Autoresizing Mask와 함께 UI 개발 초기에 Prototype 목적으로 사용하기 적합하다. 제약을 추가하기 시작하면 이 프로토타이핑 제약은 사용할 수 없다. 우측 하단의 5개의 버튼 중 가운데에 위치하는 버튼이 제약을 추가할 수 있는 팝업을 표시한다. 해당 팝업에서 오른쪽과 같이 위, 왼쪽, 오른쪽 그리고 높..
154 ~ 155. Auto Layout and Frame-based Layout & Autoresizing Mask Auto Layout 해상도 iPhone 3GS Portrait Only 320 * 480px iPad 1 Gen Portait & Landscape 768 * 1024px iPhone 4 Portait & Landscape 320 * 480pt, 640 * 960px(Retina Display) iPad 3 Gen Portait & Landscape 768 * 1024pt, 1536 * 2048px (Retina Display) 아이폰이 처음 나왔을 당시 Portrait 모드만 존재하고, 단일 해상도를 가지고 있었다. 이후 아이패드가 출시되면서 Portrait 모드와 Landscape 모드로 구분되고 새로운 해상도에 대한 대책이 필요했다. 하지만 당시에는 아이폰 앱과 아이패드 앱을 별도로 구분 지어 개..
RICOH GN-2 (GR 3x 카메라 링) 서론 이전에 말했듯 난 GR 3 Street edition의 오렌지 링이 정말 마음에 들었다. 검은색이나 차콜 색에 오렌지 색의 포인트가 들어간다니, 취향저격 그 자체다. 다만 별도로 판매되지 않고, 판매된다고 하더라고 해당 링은 GR 3x의 바뀐 렌즈 덕에 착용할 수 없다. 후자의 이유가 굉장히 중요한데, GR 3와 비슷하게 생겼다고 JJC등의 서드파티 링을 무심히 주문했다가는 껴보지도 못하고 자시 중고장터에 내놔야 하는 경우가 생길 수 있다. 해당 부속은 GR 3x에 렌즈를 장착할 때 사용하는 렌즈 어댑터가 부착되는 커넥터를 보호하기 위한 목적을 가지고 있지만. 대다수의 사용자들이 별도의 렌즈를 부착하기 보다는 GR 자체의 가볍고 작은 바디의 장점을 극대화하길 원한다. 따라서 포인트를 위한 액세서리로..
145 ~ 153. Gesture Recognizers Gesture Recognizer Tap Gesture 흔히 '터치'라고 부른다. 목록에서 원하는 항목을 선택하거나 버튼을 터치하는 등의 제스쳐를 의미한다. Pan Gesture 흔히 'Drag'라고 부른다. 손가락으로 화면을 누른 상태로 이동한다. Pinch Gesture 손가락 두개로 터치한 다음 사이의 간격을 넓히거나 좁힌다. Rotation Gesture 손가락 두개로 터치한 다음 간격을 유지하며 회전시킨다. Swipe Gesture 화면을 특정 방향으로 빠르고 터치하는 동작이다. Long Press Gesture 화면을 0.5초 이상 누른다. 사람마다 Gesture를 구사하는 방식이 조금씩 다르기 때문에 이를 정확히 인식하도록 직접 구현하는 것은 매우 어렵다. iOS에서는 이미 구현되어있는 UI..
143 ~ 144. Notification Settings and Notification Management Notification Settings Local notification과 Push Notification을 처리하기 위해서는 사용자의 명시적인 허가가 필요하다. 따라서 Notification의 구현중 권한 요청에 관련된 코드를 가장 먼저 구현한다. 사용자가 앱을 설치하고 최초로 실행하면 Notification의 권한을 묻는 경고창이 표시된다. 사용자가 수락하면 iOS가 관련 설정을 저장하고, 설정 앱을 통해 관리 메뉴를 제공한다. 해당 메뉴를 통해 권한을 수락한 이후에도 언제든지 설정을 변경할 수 있다. 따라서 사용자가 최초에 권한을 허용했다고 해서 항상 Notification을 처리할 수 있다고 가정하면 안 된다. 항상 현재 설정을 확인하고 필요한 작업을 실행해야 한다. 사용자의 설정을 거스르고 앱에..
142. Notification Content Extension Notification Content Extension Notification Content Extension은 Custoom Notification을 구현할 때 사용한다. Notification이 도착하면 화면상에 Banner가 표시되고, 이를 Pull down 하면 Full Notification Interface가 표시된다. Full Notification Interface는 두 가지 부분으로 구성되어있다. Header 앱 아이콘과 이름이 표시된다. 기본 인터페이스 iOS 13 : Attachment, Title, Body의 순서대로 표시된다. iOS 15 : Title, Body, Attachment의 순서로 표시된다. Notification Content Extension으로 UI를 구현하면 A..
140 ~ 141. JSON Payload & Silent Push Notification and Notification Service Extension
138 ~ 139. Remote Notification & Push Certificates, Provider and Client App Remote Notification & Push Certificates Remote Notification의 구현 방식은 이전의 Local Notification과 동일하다고 봐도 무방하다. 실제로 사용자에게 비춰지는 Remote Notification과 Local Notification은 시각적으로도, 기능적으로도 동일하기 때문에 이를 구별하기 힘들다. 하지만 Remote Notification은 원격서버에서 전송하는 Notification이기때문에 차이점도 존재한다. Remote Notification을 실제로 전달하는 서버는 애플의 서버로 APNs라고 부른다. 이 APNs로 Notificatio을 전달하는 서버를 Provider라고 부르고 이는 직접 구현하거나 클라우드 서비스를 사용해야한다. 강의에..
G-Shock GA-2100 (지얄오크) 서론 시계란 자고로 몸에 붙어 있기에 무조건 비싸고 예쁜 시계만이 정답이 아니다. 개인의 취향을 담을 수는 있지만 '무조건 이거다.'라는 정답이 있는 것도 아니다. 그런 걸 절실히 느낀 게 아버지인데 비싼 시계가 있어도 무겁다며 선반에서 먼지만 쌓여가고 있다. 보통 사람들이면 노는 시계 좋아라 하며 웬 떡이냐 싶겠지만 또 나는 손목이 많이 가늘어 남성을 타깃으로 한 시계들은 차기 어렵다. 어느 정도냐면 애플워치 기준으로 작은 사이즈에 밴드는 3 사이즈, 내 첫 시계인 로만손의 스켈레톤 모델은 브레이슬릿의 링크를 전부 빼고 클래스프의 미세조정까지 전부 줄여도 돌아가고, 구찌의 타임리스도 거의 끝 칸에 머물러 있다. 운동을 해도 손목 자체는 굵어지지 않고 전완근만 굵어지니 이 얼마나 저주받은 몸뚱이인지.....
137. Actionable Notification Actionable Notification 사용자는 Notification이 도착했을 때 몇 가지 옵션 중 하나를 선택할 수 있다. Normal Dismiss Action 무시해서 자동으로 사라지게 하거나 미리보기 상태에서 Swipe로 직접 사라지게 할 수 있다. Custom Dismiss Action Notification Center의 닫기 버튼을 눌러 사라지게 할 수 있다. Default Action Banner를 터치해 앱을 실행할 수 있다. Custom Action 직접 Custom Action을 추가할 수 있고, Banner 아래쪽에 버튼 형태로 추가된다. 이를 선택하면 연관된 코드가 Background에서 실행된다. Default Action과는 달리 앱이 Forground에서 실행되지는 않..