분류 전체보기(55)
-
@Published 프로퍼티 래퍼를 protocol에 정의하기
문제 상황 Combine으로 작성한 코드를 테스트하는 중인데 @Published 프로퍼티 래퍼가 말썽입니다. ViewModel에 @Published 프로퍼티 래퍼 타입을 정의하고 ViewController에서 이 타입을 바인딩하여 ViewModel에 변화가 일어나면 ViewController가 감지할 수 있게 하기 위해서 사용했습니다. 위 상황을 코드로 간략하게 정리해봤습니다. 아래 코드는 책 목록을 보여주는 화면의 로직을 담당하는 ViewModel과 이를 바인딩하고 있는 ViewController입니다. bookList에 변화가 일어난다면 bookList publisher는 BookListViewController에 UI를 업데이트하라고 전달합니다. final class BookListViewModel..
2022.11.05 -
ViewController 생명주기의 몰랐던 점 (feat. 트러블 슈팅)
ViewController 생명주기 호출 순서 iOS 개발을 한다면 ViewController 생명주기는 모두가 알고 있을 거예요. viewDidLoad -> viewWillAppear -> viewDidAppear -> viewWillDisappear -> viewDidDisappear 다른 뷰컨트롤러로 넘어가는 상황에서 현재 뷰컨트롤러의 viewWillDisppear가 먼저 호출될까 전환되는 뷰컨트롤러의 viewWillAppear가 먼저 호출될까? 도 디버깅을 해본다면 바로 알 수 있습니다. 테스트를 위해서 뷰컨트롤러의 모든 생명주기에 print문을 찍어볼게요. final class ViewController: UIViewController { override func viewDidLoad() { s..
2022.10.24 -
[CoreAnimation] Layer에 CoreAnimation을 무한으로 체이닝할 수 있을까?
안녕하세요! 오늘은 코어애니메이션을 체이닝할 수 있는지에 대해 알아보려고 합니다. 그냥 체이닝이 아니라 무한 체이닝입니다! (살짝 스포하자면 실패했습니다.. 스레드문제인 거 같은데...) 일단 구현에 들어가보도록 할게요. 구현할 애니메이션은 아래 밤하늘이에요! 질문이 나오게 된 배경 위 질문이 왜 나오게 되었는 지 설명해볼게요. 먼저, 저는 밤하늘에 별이 반짝이는 애니메이션을 주고 싶었어요. 그래서 먼저 피그마로 별을 디자인했습니다! 왜 굳이 디자인을 해주었냐면, 별이 찍힐 좌표값을 알아야했기 때문입니다! 별을 구성하고 있는 모서리를 알아야 UIBezierPath로 경로를 그려줄 수 있어요. 이미지로 추출해서 layer의 contents로 넣어줘도 가능하지만 정밀한 컨트롤이 불가능할 것 같아서 직접 만들..
2022.10.23 -
[CoreAnimation] 물체를 path 따라 움직이기 (feat. 우주비행사 날리기)
오늘은 이 우주비행사를 원하는 경로로 움직여보려고 합니다! 먼저 지난번에 알아본 CAKeyframeAnimation와 UIBezierPath의 개념에 대한 이해가 필요해요. 아래 두곳에 정리해두었는데 참고하시면 좋겠습니다! https://github.com/wody-d/woody-iOS-tip/blob/main/TIL_2022:10:19_uibezierpath.md GitHub - wody-d/woody-iOS-tip: 🐶 iOS에 대한 소소한 팁들과 개발하다 마주친 버그 해결기, 그리고 오늘 🐶 iOS에 대한 소소한 팁들과 개발하다 마주친 버그 해결기, 그리고 오늘 배운 것들을 모아둔 레포 - GitHub - wody-d/woody-iOS-tip: 🐶 iOS에 대한 소소한 팁들과 개발하다 마주친 버그 ..
2022.10.22 -
[CoreAnimation] AnchorPoint, position의 관계 (feat. SwiftUI에선 anchortPoint가 없다..?)
뷰의 레이아웃을 위치시킬 때, 오토레이아웃을 사용하면 사실 frame, anchorPoint 등 레이아웃 관련 프로퍼티는 크게 신경 쓰지 않아도 됩니다. 그런데, 이번 프로젝트에서 frame을 이용해야 하는 조금 어려운 애니메이션을 구현해보는 구현 내용이 있었고 구현을 하다보니 이전에 공부하다 헷갈렸던 내용과 똑같은 곳에서 헷갈렸습니다. 그래서 이 글은 저와 비슷하게 헷갈리는 분들이 있을 수 있기 때문에 작성했습니다. layer프로퍼티에 있는 position은 무엇을 나타내는 값일까요? 라는 질문이 나오기까지의 과정을 설명하겠습니다. 먼저, Core Animation Basics 문서를 읽다보면 중간에 아래 그림이 나옵니다. "anchor point가 layer의 position에 얼마나 영향을 미치는지..
2022.10.22