2017-02-14 10 views
1

NSCollectionView는 항목의 고정 크기를 정의하고 그에 따라 NSCollectionView의 크기를 조정하는 대신 사용 가능한 공간에 적응하는 NSCollectionView를 만들려고합니다.화면에 맞게 NSCollectionViewItem을 자동 크기 조정

NSCollectionViewFlowLayout을 사용하여 고정 된 크기를 필요로하므로이를 달성 할 수있는 방법을 찾지 못했습니다. NSCollectionViewGridLayout을 사용하여 원하는 결과를 얻었습니다. 그러나 NSCollectionView가 포함 된 창을 비율 조정할 때 가로 세로 비율 (제곱)을 유지하려면 CollectionViewItems가 필요하고 GridLayout은 해당 항목을 min 및 maxItemSize에 따라 조정합니다. 창 크기와 컬렉션의 항목 수에 따라 정확하게 사각형이 아닌 항목이 생깁니다.

예 스크린 샷 : distorted NSCollectionViewItems

아마, 그리드에 maximumNumberOfColumns 설정 수집 및 창 크기의 항목 수에 따라 함께, 그러나 조금 성가신 것 같다 해결할 수 있습니다. 원하는 레이아웃을 얻는 더 좋은 방법이 있습니까? 어쩌면 커스텀 NSCollectionViewLayout을 가지고 있을까요?

답변

1

당신은 컨트롤러에 다음과 같은 프로토콜을 구현해야합니다

NSCollectionViewDelegateFlowLayout 

그것은 미세 조정 항목 (크기/위치/여백)을 허용하는 방법을 많이했다. 콜렉션 뷰 레이아웃을 "플로우"(IB에서)로 설정하는 것을 잊지 마십시오. 다음과 같은 방법을 구현하기위한

봐 :

func collectionView(collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAtIndex section: Int) -> NSEdgeInsets { 

    ... 

} 

func collectionView(collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> NSSize { 

    ... 
} 

func collectionView(collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAtIndex section: Int) -> CGFloat { 
    ... 
} 
오른쪽 창 크기 및 항목의 양에 따라 세포의 크기를 계산하는 의미
+0

? 거기에 '자동 레이아웃'이 없습니까? – rooney

+0

수정. 이러한 세부 사항에 대한 자동 레이아웃은 없습니다. 나는 그들이 좀 더 CSS-flexbox를 만들었 으면 좋겠다. –