본문 바로가기

분류 전체보기53

[WWDC19] Advances in UI Data Sources (DiffableDataSources) 컴포지셔널 레이아웃에 이어서 연달아 보고 정리해놓았는데 노션에만 놓고 옮기는 것을 깜빡해서 지금이라도 옮겨적는다..! 적용기는 이후에 다시 남겨야겠다! 기존 DataSource 나름 굉장히 직관적이다. 하지만 앱은 계속해서 복잡해져간다. Controller Layer와 UI Layer의 대화 Smooth sailing UI: Controller, 섹션에 있는 항목의 수를 알려줘. UI: 콘텐츠를 렌더링할 때 셀을 알려줘. 문제는 여기서 발생한다. (more complex) Controller: UI야 나 바꼈는데??? (didChange) UI: 어? 그러네 그러면 나 TableView나 CollectionView UI 바꿔야겠는데??😮 이건 좀 복잡한 작업이다. 그리고 만약 정말 잘 처리해줘도 아래와 .. 2023. 6. 12.
[삽질] 클래스의 확장성 개선(protocol 의존성 주입: any) Trouble Shooting (Action나누면서) 기존 상황 import Foundation public typealias CompleteBottomSheetAction = ((DidBottomSheetActionType) -> Void) protocol BottomSheetAction { func sendAction(_ action: DidBottomSheetActionType) func cancel() var completeAction: CompleteBottomSheetAction? { get } } 위와 같이 Action 프로토콜을 정의하고 해당 프로토콜을 정의하는 아래와 같은 클래스가 있다. import Foundation final class RuleBottomSheetAction: Bot.. 2023. 6. 1.
[iOS] CGPoint, CGSize, CGRect, Frame, Bounds 어떻게 지평좌표계로 고정하셨죠? 좌표계에 화면을 띄우기 위해서는 origin(x, y), width, height값을 알아야합니다. CGPoint 2차원 좌표계의 점을 포함하는 구조체 x좌표, y좌표를 가지고 있음 시작점 (origin)을 나타나게 될 구조체 CGSize 넓이와 높이 값을 가지고 있는 구조체 width와 height값을 가지고 있음 Size는 넓이와 높이만 가지고 있을 뿐 아직 사각형은 아님. CGRect 직사각형의 위치와 크기를 포함하고 있는 구조체 이름에서 알 수 있듯이 CGRect, 사각형의 모습. 코드로 순서대로 살펴봅시다. CGPoint → CGSize → CGRect 순. /* Points. */ public struct CGPoint { public init() public .. 2023. 5. 8.
[삽질] Infinite Carousel 구현해보기 + auto scrolling(Timer) Infinite Carousel 심화과제의 티빙화면의 상단에 위치한 스크롤되는 화면을 구현과정을 정리해서 남겨놓고자 합니다 ! 화면의 특징을 먼저 살펴보면 좌우로 스크롤되면서 무한정 스크롤 됨. (마지막에서 첫번째, 첫번째에서 마지막으로 갈 때도 마찬가지) 자동으로 일정시간이 지나면 화면이 스크롤 됨. 이렇게가 있습니다. 핵심 구현 아이디어 데이터소스를 활용해서 데이터를 넣기 위해 collectionView를 활용하고 스크롤뷰가 스크롤이 끝난 시점에 scrollView의 setContentOffset메서드를 통해서 contentOffset.x좌표를 이동시켜주면서 화면을 전환시켜줄 예정입니다. 데이터 세팅 4개의 아이템이 있다고 가정. -> [1, 2, 3, 4] 첫번째 아이템에서 마지막으로 갈 때 () .. 2023. 5. 8.