본문 바로가기

Dev37

[삽질] BottomSheet 구현 중 시행착오 + 해결과정 (PanGesture, CGAffineTransform) 바텀시트를 구현하면서 겪언던 시행착오를 기록하고 어떻게 해결했는지 그 방법을 정리해보자. 초기방법 처음에 바텀시트뷰을 아래에 붙인다음에 높이를 Snapkit의 updateConstraint를 통해서 화면의 반까지 올리는 방법으로 해보니 아래 저장하기 버튼이 이상하게 남는 현상이 있었습니다..저장하기 버튼 뷰의 아래에 붙어있어서 화면에 처음 뜰 때부터 마지막에 사라지기 직전까지 남아있는 문제였습니다. -> 그럼 아예 화면 띄워놓고 아래에 숨겨놓고 시작하자 ! 초기화면 구성 - 왼쪽그림부터 보면 구상한 대로 바텀시트를 화면 아래에 숨깁니다. (top을 bottom으로) 그렇게 되면 바텀시트의 초기 origin값은 (0, 812: Iphone13 mini기준)가 될 것입니다. 해당 origin값은 이 후 CG.. 2023. 4. 16.
[Q&A] ViewController생성: Factory Method Pattern & DI SOPT 과제를 수행하면서 아래 코드를 사용했는데 해당 코드의 역할에 대해서 질문을 받았다. 그 이유에 대해서 정리하고 남겨볼려고한다. ModuleFactory 사용 이유 UML UML작성 기준: https://www.nextree.co.kr/p6753/ ModuleFactory 코드 import UIKit protocol ModuleFactoryProtocol { func makeLoginViewController() -> UIViewController func makeWelcomeViewController() -> UIViewController } final class ModuleFactory: ModuleFactoryProtocol { static let shared = ModuleFactory().. 2023. 4. 15.
[Architecture] Clean Architecture 나만의 언어로 정리하기 이해를 위해 직접 ppt로 그리면서 적어보았습니다 전체적인 흐름 Service를 UseCase라고 생각해주시면 될 것 같습니다. 아래 글에서는 'Service(UseCase)' 이와 같이 표기했습니다. Presentation Layer MVVM View는 뷰를 선언하고 레이아웃을 처리하고 애니메이션 처리 등 UI를 그리는데에만 집중합니다. 사용자에게 들어온 Input 이벤트를 ViewModel에게 전달하고, 변경된 값을 View에 그립니다. 변경된 값을 감지하는 방법으로는 - Observer Pattern을 기반으로 한 RxSwift나 Combine를 통해 ViewModel안에 있는 "화면에 그릴 값"들을 감시하는 방법 - didSet과 closure를 통해서 값이 업데이트가 됐다는 이벤트를 받는 방법 .. 2023. 4. 11.
final 키워드를 왜 사용할까?? 정리 final 키워드를 왜 사용할까? 결론부터 결론부터 말하고 차근차근 하나씩 알아보도록 하겠습니다 ! 만약 결론부분만 보시고 이유가 그냥 떠오른다?? 결론만 읽으시고 다아는내용이네.. 하고 뒤로가셔도 됩니다 ! 그렇지 않다면 같이 하나씩 살펴볼까요??😄 전반적인 구성과 예시는 WWDC21 Understanding Swift Performance를 참고했습니다. Class는 default로 메서드들을 dynamic dispatch(뒤에서 다룰 예정! 모른다면 일단 넘어가자)합니다. 이것 자체로는 static dispatch(이것도 뒤에서 !!)와 크게 다르지 않지만, method chaining같은 경우에 inlining(이것도 뒤에서 static dispatch와 같이 설명할 예정!)같은 최적화를 불가능하.. 2023. 4. 5.