문제

UICollectionViewDelegateFlowLayout은 UICollectionViewFlowLayout이 클래스이고 프로토콜과 클래스의 차이점을 알고 있습니다. 내 이해에서 UICollectionViewFlowayout에서 상속 된 클래스를 갖는 것과 똑같은 효과를 얻기 위해 UICollectionViewDelegateFlayout 프로토콜을 따르는 수업을 가질 수 있습니다. 나는 프로토콜과 수업 간의 그러한 관계를 찾아이 결론을 내리고있다. UICollectionViewDelegateFlowLayout ------------ UICollectionViewFlowayout. collectionView : 레이아웃 : sizeforeItematIndexpath : ---- itemsize. collectionview : 레이아웃 : insetforsectionatIndex : ---- Sectionset. - collectionview : 레이아웃 : certiNesizeForHeaderinsection : - headerReferencesize. - collectionview : 레이아웃 : referencesizeForFooterinsection : - FooterReferencesize

또한 프로토콜을 참조하여 다음을 읽습니다. "이 프로토콜의 모든 메소드는 선택 사항입니다. 특정 메서드를 구현하지 않으면 플로우 레이아웃 델리게이트가 적절한 간격 정보에 대한 자체 속성의 값을 사용합니다." 따라서 내 이해는 다음과 같습니다. CollectionView 레이아웃 속성과 delegateFlowLayout을 가지고있는 경우, DelegateFlowLayout은 잠재적으로 무언가를 덮어 쓸 수 있습니다. 즉, 둘 다를 가질 수 있고 프로토콜이 더 높은 우선 순위를 차지할 것입니다. 오른쪽?

그래서, 프로토콜을 발명 한 논리와 똑같은 수업은 무엇입니까?

도움이 되었습니까?

해결책

유량 레이아웃 클래스는 대부분의 상황이 아닌 경우 많은 경우 많은 "기본"흐름 레이아웃입니다. UICollectionViewFlowayout이 처리 할 수없는 무언가가 필요하면 추가 기능을 제공하도록 UICollectionViewLayout을 하위 클래스 할 수 있습니다.

대리자 메서드는 기본 UICollectionViewFlayout에 대한 대리인 호출을 통해 제한된 사용자 정의를 제공합니다.

문서에서 "UICollectionViewDelegateFlowLayout 프로토콜은 UICollectionViewFlowLayout 객체와 조정할 수있는 메소드를 정의하여 그리드 기반 레이아웃을 구현합니다.이 프로토콜의 메서드는 항목의 크기와 눈금의 항목 간의 간격을 정의합니다." / P>

그들은 같은 일을하지 않습니다. 대리인 메서드가 기본적으로 수행되지 않고 흐름 레이아웃이 기본적으로 수행하지 않아도 여분의 것을 수행 할 수 있도록 프로토콜이 제공됩니다. 프로토콜은 유효한 "컨트롤"을 제공합니다. 필요하지 않은 경우 대리자 메서드를 사용할 필요가 없습니다.

"우선 순위"가 없습니다. 프로토콜은 선택 사항입니다. 따라서 UICollectionViewFlowLayout을 사용하지 않으면 프로토콜을 사용하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top