2017-02-14 27 views
1

NSCollectionViewを作成しようとしています.NSCollectionViewは、アイテムの固定サイズを定義するのではなく、それに応じてNSCollectionViewのサイズを変更するのではなく、NSCollectionViewItemを画面に合わせて自動サイズ変更

NSCollectionViewFlowLayoutでアイテムを固定サイズにする必要があるため、これを実現する方法を見つけられませんでした。私はNSCollectionViewGridLayoutで望みの結果にかなり近づいた。しかし、NSCollectionViewを含むウィンドウを拡大縮小するときに、縦横比(四角形)を維持するためにCollectionViewItemsが必要ですが、GridLayoutはアイテムをminおよびmaxItemSizeに応じて拡大/縮小します。ウィンドウのサイズやコレクション内のアイテムの数によっては、正方形ではないアイテムになります。

例のスクリーンショット:distorted NSCollectionViewItems

私はおそらく収集とウィンドウサイズ内の項目の数に応じて、グリッドにmaximumNumberOfColumnsを設定すると、その回避可能性があり、しかし、少し面倒なことのようです。望ましいレイアウトを実現するためのよりよい方法はありますか?たぶんカスタムNSCollectionViewLayout?

答えて

1

あなたは、コントローラに以下のプロトコルを実装する必要があります。

NSCollectionViewDelegateFlowLayout 

それは微調整項目(サイズ/位置/マージン)を可能にする方法をたくさん持っています。あなたのコレクションビューのレイアウトを "flow"(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フレックスボックスを見せてくれることを願っています。 –

関連する問題