본문 바로가기

분류 전체보기

(345)
#03. 타이머 구현과 문제 파악 보호되어 있는 글입니다.
#02. Timer 구현, 이전의 문제 해결 보호되어 있는 글입니다.
#01 Design 보호되어 있는 글입니다.
[2021.12.25] 인천, 청라, 정서진 (Ricoh GR 3x) 서론 RICOH GR 3x / 포지티브 필름, 커스텀 보정 없음(못함) 인터넷을 떠돌아다니다가 '켜켜이'라는 베이크샵을 알게 된 것을 계기로, 급하게 당일치기 인천행 3인 나들이가 결성됐다. 뭔가 마음대로 안 된 것도 많았지만 재밌었고, 특히 운전한 후배님... 고생 많았어... 😇 본론 청라 베이크샵 켜켜이(KK2) 청라 뚝배기이탈리아 청라 호수공원 카페 다이브 정서진 결론 인터넷에서 뜬금 맛있는 빵집을 찾아냈다는 글을 봤는데, 그냥 공부에도 시큰둥하기도 하고... 처음 있는 일도 아니지만 성탄절에 약속도 없고, 반 장난처럼 급하게 잡은 약속이 성사돼 더 유명해지기 전에 갔다 왔다. 켜켜이(KK2) https://www.instagram.com/kk2___bake/ (제가 이 시대에 맞지 않게 SNS를..
169 ~ 170. Timer & Runloop and Concurrency Programming Timer & Runloop Timer는 지정된 주기마다 반복되는 코드를 실행할 때 사용할 수 있다. Timer가 제공하는 API는 단순하지만 Runloop에 대한 이해가 없다면 원하는 결과를 얻기 어렵다. Runloop 다양한 이벤트를 처리하기 위해 사용하는 Event Processing Loop이다. 앱이 시작되면 Main Thread에서 동작하는 Runloop가 자동으로 생성된다. Background Thread에서 Runloop가 필요한 경우 직접 구성해야 한다. Runloop는 Thread에서 발생하는 Event Source를 감시한다. iOS는 Event Source로부터 새로운 Event가 도착하면 Thread를 깨워 Runloop로 이벤트를 전달한다. 이후 Runloop는 등록된 Handl..
HiBy R5S 다크모드 적용하기 (Android 8.x 다크모드) 서론 HiBy R5S 개봉 및 6개월 사용기 서론 지난여름 애플뮤직이 무손실 지원을 시작했다. 해외 음원을 주로 듣던 내게 적당한 가격의 애플뮤직은 꽤나 구미가 당기는 딜이었다. 음악을 항상 듣기도 하고, 자주 듣기도 하지만 가장 chillog.page 이전 개봉기 및 사용기에서 못 다 다룬 장점이 있다. 우선, M3X는 안드로이드 7.0을 사용하고, R5S는 안드로이드 8.1을 사용한다. 배경화면도 기본을 사용하고, Hiby 플레이어 자체도 검은색 베이스로 튜닝하는 등 UI도 어두울 것 같지만 전혀 그렇지 않다. 요즘은 당연시 생각되는 다크 모드는 Android는 10부터, iOS는 13부터 지원하는 상당히 상위 버전의 기능이다. 취침 전 침대에서 사용하는 내게 이런 밝은 UI는 섬광탄 수준으로 아주 ..
HiBy R5S 개봉 및 6개월 사용기 지난여름 애플뮤직이 무손실 지원을 시작했다. 해외 음원을 주로 듣던 내게 적당한 가격의 애플뮤직은 꽤나 구미가 당기는 딜이었다. 음악을 항상 듣기도 하고, 자주 듣기도 하지만 가장 집중해서 듣는 시간은 바로 자기 전 침대 안이다. 핸드폰과 대부분의 전자기기는 책상에 올려 둔 상태로 아무런 방해 없이 오롯이 한 가지에 집중할 수 있다. 그런 시간에 조금 더 섬세한 음악을 들을 수 있다니, 리시버와 재생기기에 신경이 안 쓰일 리가 없다. 다만 무손실 재생이 iOS 15 이상의 기기를 요구했기에 아쉽게도 내가 가진 5s는 더 이상 그 역할을 하지 못하는 상황에 이르렀다. 이럴 줄 알았으면 SE를 남기고 너를 처분할 걸... 하는 아쉬움과 조금 더 음악을 즐겨보자는 욕심이 생긴 것도 이때였다. 개봉기 그럼 그의..
168. Debugging Auto Layout Debugging Auto Layout Auto Layout에서 오류가 발생하는 이유는 필요한 제약이 추가되지 않은 경우 필요 이상의 제약이 중복돼 있는 경우 처럼 명확하다. 필요한 제약만 올바르게 추가한다면 문제가 발생하는 경우는 없다. 하지만 코드를 사용해 제약을 추가하는 경우 앱을 실행할 때까지 결과를 확인할 수 없으므로, 이러한 규칙을 지키기 어려울 때도 있다. Missing Constraints 예시는 위와 같다. leading 제약만 추가돼있고, Indicator가 붉은 색으로 표시된다. Interface Builder에서는 여러 방식으로 오류를 표현한다. Design Time Visual Indicator Scene에서 해당 제약을 붉게 표현한다. Constraint Issue Indicat..
167. Constraints with Code #5 Constraints with Code #5 Constraint animation 제약에 Animation을 추가해 본다. // // AnimatingLayoutChangesViewController.swift // Constraints with Code Practice // // Created by Martin.Q on 2021/12/20. // import UIKit class AnimatingLayoutChangesViewController: UIViewController { @IBOutlet weak var pinkView: UIView! @IBOutlet weak var heightConstraint: NSLayoutConstraint! @IBOutlet weak var widthConstrai..
166. Constraints with Code #4 Constraints with Code #4 Align Center 사용할 Scene은 위와 같다. Label을 중앙에 배치하고, 파란색 View를 아래에 배치한다. 단, Label은 Intrinsic Size를 사용하도록 크기 제약은 추가하지 않는다. Label과 파란색 View의 간격은 10pt, 파란색 View의 높이는 5pt, 파란색 View의 너비는 Label의 너비와 같도록 제약을 추가한다. 추가된 모습은 위와 같다. NSLayoutConstraint로 제약 추가하기 func layoutWithInitializer() { label.translatesAutoresizingMaskIntoConstraints = false tealView.translatesAutoresizingMaskIntoCo..