본문 바로가기

Swift44

[UIKit] UICollectionView Compostional Layout 으로 TableView만들기 (WWDC20 List in UIColelctionView ) UICollectionView Compostional Layout 으로 TableView만들기 (WWDC20 List in UIColelctionView ) 글 작성 개요 CompositionalLyaout이 UITableView를 완전하게 대체할 수 있지 않을까라는 조그마한 의문에서 시작하게 되었음. 그래서 관련 세션이 있나 찾아 보았는데 WWDC20 List in UICollectionView를 보게 되었고 이에 대한 내용을 정리하기로 했음 Modern Collection Views UICollectionView를 구성하는 API는 데이터, 레이아웃, 프레젠테이션의 세 가지 카테고리로 구분할 수 있습니다. UICollectionView의 새로운 개념 중 하나는 콘텐츠가 렌더링되는 '위치'인 레이아웃과.. 2024. 1. 24.
[UIKit] iOS 트러블 슈팅 UIStackView Distribution 이해하기 UIStackView에 관한 트러블 슈팅 입니다. 글 작성 개요 최근 UIStackView를 활용하여 UI를 만들 일이 있었습니다. 다음과 같은 Layout을 만들기 위해 StackView를 활용하여 작성을 했는데요, StackView의 Size가 어떤 방식으로 바뀌는지 헷갈려서 글을 작성합니다. UIStackView의 컴포넌트 크기 내부 컴포넌트의 크기가 0 일때 UIStackView는 처음 컴보넌트와 맨 나중의 컴포넌트를 통해서 그 IntrinsicSize가 정해집니다. 즉 append된 Component가 고유의 사이즈를 통해서 StackView의 크기가 의존적이라는 말 입니다. 다음 사진을 통해서 설명 하겠습니다. 만약 높이를 지정하지 않으면, 내부 Content의 높이를 지정하지 않으면, UIS.. 2024. 1. 23.
[swift] 비동기적으로 메시지를 전달하는 방법 part 1 (delegate) 개요 swift에는 비동기 방식으로 메시지를 전달하는 방식이 몇가지 있습니다. 그중 소개할 방법을 delegate을 소개하려 합니다. delegate라고 한다면 UITableviewDelegate, UITextFieldDelegate등등 다양한 말들을 들어봤을 것이라 생각합니다. 하지만 저도 처음에 delegate에 대한 개념이 조금은 난해했던 것 같습니다. 그래서 예시를 통해서 설명하겠습니다. 본문 delegate패턴이란? https://en.wikipedia.org/wiki/Delegation_pattern Delegation pattern - Wikipedia From Wikipedia, the free encyclopedia In software engineering, the delegation .. 2023. 10. 15.
[Swift] 여러개의 타입이 존재하는 json을 encode및 decode 글 작성 개요 : 상속을 받거나, 상위타입으로 묶인 데이터를 한번에 encode해야하는 상황이 발생 했을 때 어떤 방식으로 하면 좋을까? ex) var stores: [Store] = [appleStore, blueBerryStore, candyStore]을 한번에 encode하고 싶은데 어떻게 할까? 일단 상위 타입에 대해서 고민해 봤습니다. 상위 타입은 struct일수도 있고 class일수도 있다. struct는 상위 타입이란 말이 어색할 수 있습니다. 하지만 이를 protocol을 통해서 구현 할 수 있습니다. protocol을 통해서 구현하게 된다면 객체를 상속 받은 것 처럼 타입을 통해 묶을 수 있습니다. 이를 통해서 작성해 보겠습니다. 일단 Protocol을 통해서 묶는다면 상위에 존재하고, .. 2023. 10. 1.
[UIKit] because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies? That's illegal Error 처리 (not addsubview) Error 가 보통 because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies? That's illegal 으로 처리될 것이다. UI를 선언하는 클로저가 연산 프로퍼티인지 확인하자. 많이 나오는 에러 해결 방법은 addsubview를 통해서 에러를 해결한다고 기재되어 있다. 하지만 나는 addsubview또한 정확한 언어로 해결했다. 한 두시간 얼타고 확인한 것은 클로저가 UI가 아닌 computeProperty로 정의되어 있었던 것이다. //정상 코드 var testLabel: UILabel = { let lb = UILabel() lb.text = .. 2023. 8. 9.
Swift 타입 지정하는 법 스위프트 공식 문서를 읽다보면 타입을 지정하는 방법이 나온다. 보통은 temp처럼 var temp: 가 보편적으로 쓰이는 것 같습니다. 사실 한칸 띄고 타입 비정하기 너무너무 귀찮아서 다른 현직자분들은 어떻게 사용하는지 궁금해졌습니다. 그리고 왜 이렇게 사용해야 하는지도 궁금했습니다. 다른 현직자 사람들은 애플 공식문서상에서 자주 활용되는 한칸 띄는 방식을 채택하여 개발한다고 답변을 받았습니다. 사실 개취인줄 알았는데 Siwft에서 문법적으로 선호하는 것들이 따로 있는것을 확인했습니다. 이는 airbnb발췌 입니다. 아래와 같이 return type과 형태를 지정하는 것들에도 선호하는 문법이 다른 것을 확인 할 수 있었습니다. 이 외에도 다양한 것들을 찾을 수 있었습니다. 시간이 되면 읽어보는 것을 추천.. 2023. 6. 30.