You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
그럼 NSCollectionLayoutSpacing 타입형이면 CGFloat타입형 일때 보다,어떤것이 더 가능할까?
NSCollectionLayoutSpacing 타입형이면 CGFloat을 인자로 받는 fixed, flexible 타입 메소드를 이용할 수 있다.
fixed는 주어진 인자 CGFloat 그대로 고정된 값이고
flexible은 주어진 인자 CGFloat 값보다 크거나 같은 spacing을 줄 수 있다.
아무튼 결론적으로 NSCollectionLayoutSpacing타입형이면 유동적인 spacing이 가능하단 것이 결론
그리고 언제 fractionalWidth를 사용하여 컬럼을 나누고, 언제는 count 인자로 컬럼을 나눌까?
count는 컬럼 줄의 갯수를 Int값으로 딱 넣을 수 있음 .
그렇기 때문에 나중에 count값을 constant상수로 정해서 넣기 편리할 것임.
더 나아가 constant 값이라면, 삼항연산자를 사용하여
iPad일때, iPhone일 때 constant를 나누어 주더라도 가독성을 해치지 않고
간편하게 구성하기 좋다.
DistinctSectionsView
iPhone
iPad
func createLayout()->UICollectionViewLayout{letlayout=UICollectionViewCompositionalLayout{(sectionIndex:Int,
layoutEnvironment:NSCollectionLayoutEnvironment)->NSCollectionLayoutSection?inguardlet sectionLayoutKind =SectionLayoutKind(rawValue: sectionIndex)else{returnnil}letcolumns= sectionLayoutKind.columnCount
// The group auto-calculates the actual item width to make
// the requested number of columns fit, so this widthDimension is ignored.
letitemSize=NSCollectionLayoutSize(widthDimension:.fractionalWidth(1.0),
heightDimension:.fractionalHeight(1.0))letitem=NSCollectionLayoutItem(layoutSize: itemSize)
item.contentInsets =NSDirectionalEdgeInsets(top:2, leading:2, bottom:2, trailing:2)letgroupHeight= columns ==1?NSCollectionLayoutDimension.absolute(44):NSCollectionLayoutDimension.fractionalWidth(0.2)letgroupSize=NSCollectionLayoutSize(widthDimension:.fractionalWidth(1.0),
heightDimension: groupHeight)letgroup=NSCollectionLayoutGroup.horizontal(layoutSize: groupSize, subitem: item, count: columns)letsection=NSCollectionLayoutSection(group: group)
section.contentInsets =NSDirectionalEdgeInsets(top:20, leading:20, bottom:20, trailing:20)return section
}return layout
}
Implementing Modern Collection Views
GridView: Horizontal
NSCollectionLayoutGroup.horizontal()
은 item이 채워지는 방향이 horizontal임을 말함.GridView: Vertical
NSCollectionLayoutGroup.vertical()
로 설정할 경우 item이 수직 방향으로 채워짐orthogonalScrollingBehavior
값을 설정해주어야한다.NSCollectionLayoutGroup.vertical()
이렇게 바로 쓸 수 있는 이유InsetItemsGridView
TwoColumnView
NSCollectionLayoutGroup.horizontal
또는vertical
함수에 count 인자로 넣어줄 수 있다.interItemSpacing
item들 사이에 Spacing을 줄 수 있고,interGroupSpacing
값으로 group 사이에 Spacing을 줄 수 있다.interGroupSpacing
은 CGFloat 타입형인 반면에 ,interItemSpacing
은NSCollectionLayoutSpacing
타입형이더라.NSCollectionLayoutSpacing
타입형이면 CGFloat타입형 일때 보다,어떤것이 더 가능할까?NSCollectionLayoutSpacing
타입형이면 CGFloat을 인자로 받는 fixed, flexible 타입 메소드를 이용할 수 있다.NSCollectionLayoutSpacing
타입형이면 유동적인 spacing이 가능하단 것이 결론count
는 컬럼 줄의 갯수를 Int값으로 딱 넣을 수 있음 .DistinctSectionsView
iPhone
iPad
UICollectionViewCompositionalLayout
에서 레이아웃을 정의할 때 클로저를 이용하고 있는데,AdaptiveSectionsView
iPhone
iPad
layoutEnvironment.container.effectiveContentSize.width
로 기기의 너비를 알아내고 있는데,NSCollectionLayoutEnvironment
인자 값을 가지고 오는 이유를 알 수 있음.SectionHeadersFootersView
PinnedSectionHeaderFooterView
NSCollectionLayoutBoundarySupplementaryItem
에pinToVisibleBounds
라는 설정을 해주면 고정됨zIndex
은 z축에서의 우선순위를 나타낸다.SectionDecorationView
NestedGroupsView
OrthogonalScrollingView
OrthogonalScrollingBehavior
continuous
: 연속적인 끊기지 않는 스크롤continuousGroupLeadingBoundary
: 그룹 단위로 앞의 Leading에서 자연스럽게 끊기도록 하는 스크롤.paging
: 페이지 단위로 스크롤이 끊기도록 함.groupPaging
: 그룹을 페이지 단위로 스크롤이 끊김.groupPagingCentered
: 그룹을 페이지 단위로 스크롤이 그룹의 중앙을 보여주도록 끊김none
: 설정 안해주면 자동으로 default 값. 직교 방향으로 스크롤 허용 안함.The text was updated successfully, but these errors were encountered: