带页眉和页脚的 NSCollectionView
NSCollectionView with Header and Footer
我需要这样的东西:
但我的代码是这样做的:
func collectionView(collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> NSView {
let a = myView()
if kind == NSCollectionElementKindSectionHeader {
a.frame = NSMakeRect(0, 0, 1000, 10)
}
else if kind == NSCollectionElementKindSectionFooter {
a.frame = NSMakeRect(0, 0, 1000, 12)
}
return a
}
func numberOfSectionsInCollectionView(collectionView: NSCollectionView) -> Int {
return 3
}
override func numberOfItemsInSection(section: Int) -> Int {
if section == 0 {
return 5
}
else if section == 1 {
return 5
}
return 10
}
两个页眉和页脚都在x=0,y=0的位置,那么如何从我的自定义视图(页眉和页脚)计算y位置?
我想你应该检查两件事
首先是单击您的集合视图属性检查器
你可以看到像这样勾选两个复选框
附件 * 节页眉,节页脚
第二个是覆盖关键字
我猜你应该把 override 关键字放在你的 func 关键字前面!
根据 Apple 的示例项目 CocoaSlideCollection
,部分页眉和页脚可供 NSCollectionViewFlowLayout
使用,请查看 AAPLBrowserWindowController
和 AAPLWrappedLayout
了解更多详细信息。
转换成Swift和英文:P,简述如下:
- 实施协议
NSCollectionViewDelegateFlowLayout
- 实现了
referenceSizeForHeaderInSection
和referenceSizeForFooterInSection
这两个方法
viewForSupplementaryElementOfKind
将在步骤 2 之后调用
对于第 3 步,我使用以下代码
func collectionView(collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> NSView {
var nibName: String?
if kind == NSCollectionElementKindSectionHeader {
nibName = "Header"
} else if kind == NSCollectionElementKindSectionFooter {
nibName = "Footer"
}
let view = collectionView.makeSupplementaryViewOfKind(kind, withIdentifier: nibName!, forIndexPath: indexPath)
return view
}
这里使用的标识符nibName
,链接到我创建的两个nib文件来设置NSView,即Header.xib
和Footer.xib
这是我得到的结果collectionView。
希望对您有所帮助,我正在为此创建一个视频教程。帮帮忙。
编辑 1:
Sample Code 现已可用
我需要这样的东西:
但我的代码是这样做的:
func collectionView(collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> NSView {
let a = myView()
if kind == NSCollectionElementKindSectionHeader {
a.frame = NSMakeRect(0, 0, 1000, 10)
}
else if kind == NSCollectionElementKindSectionFooter {
a.frame = NSMakeRect(0, 0, 1000, 12)
}
return a
}
func numberOfSectionsInCollectionView(collectionView: NSCollectionView) -> Int {
return 3
}
override func numberOfItemsInSection(section: Int) -> Int {
if section == 0 {
return 5
}
else if section == 1 {
return 5
}
return 10
}
两个页眉和页脚都在x=0,y=0的位置,那么如何从我的自定义视图(页眉和页脚)计算y位置?
我想你应该检查两件事
首先是单击您的集合视图属性检查器
你可以看到像这样勾选两个复选框
附件 * 节页眉,节页脚
第二个是覆盖关键字
我猜你应该把 override 关键字放在你的 func 关键字前面!
根据 Apple 的示例项目 CocoaSlideCollection
,部分页眉和页脚可供 NSCollectionViewFlowLayout
使用,请查看 AAPLBrowserWindowController
和 AAPLWrappedLayout
了解更多详细信息。
转换成Swift和英文:P,简述如下:
- 实施协议
NSCollectionViewDelegateFlowLayout
- 实现了
referenceSizeForHeaderInSection
和referenceSizeForFooterInSection
这两个方法
viewForSupplementaryElementOfKind
将在步骤 2 之后调用
对于第 3 步,我使用以下代码
func collectionView(collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> NSView {
var nibName: String?
if kind == NSCollectionElementKindSectionHeader {
nibName = "Header"
} else if kind == NSCollectionElementKindSectionFooter {
nibName = "Footer"
}
let view = collectionView.makeSupplementaryViewOfKind(kind, withIdentifier: nibName!, forIndexPath: indexPath)
return view
}
这里使用的标识符nibName
,链接到我创建的两个nib文件来设置NSView,即Header.xib
和Footer.xib
这是我得到的结果collectionView。
希望对您有所帮助,我正在为此创建一个视频教程。帮帮忙。
编辑 1:
Sample Code 现已可用