NSCollectionView使用笔记

class(HeaderView,FooterView):NSView, NSCollectionViewElement{

}复制代码
NSCollectionViewDataSource{
    collectionView(_ collectionView: NSCollectionView, viewForSupplementaryElementOfKind kind: NSCollectionView.SupplementaryElementKind, at indexPath: IndexPath) -> NSView
}复制代码

kind:.sectionHeader,.sectionFooter

getView:

collectionView.makeSupplementaryView(ofKind: kind, withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "header and footer"), for: indexPath)复制代码

使用NSCollectionViewFlowLayout

let flowlayout = NSCollectionViewFlowLayout()
flowlayout.sectionHeadersPinToVisibleBounds = true
flowlayout.sectionFootersPinToVisibleBounds = true

collectionview.collectionViewLayout = flowlayout复制代码

使用NSCollectionViewFlowLayout之后,默认的将会失效

flowlayout.itemSize = NSSize(width: 500, height: 84)
flowlayout.headerReferenceSize = NSSize(width: 500, height: 150)
flowlayout.footerReferenceSize = NSSize(width: 500, height: 48)
//边距
flowlayout.sectionInset = NSEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)复制代码

3、动态设置item的Size

NSCollectionViewDelegateFlowLayout{
    func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
    //比如根据文字的
    let nsstring: NSString = "string"
    let size = CGSize(width:1000, height:100)
    let dic = NSDictionary(object: NSFont.labelFont(ofSize: 13), forKey: NSAttributedStringKey.font as NSCopying)
    let new_size = nsstring.boundingRect(with: size, options: .usesLineFragmentOrigin, attributes: (dic as! [NSAttributedStringKey : Any]), context: nil).size
    return new_size//size(width:,height:)
    }
}复制代码
collectionview.register(<#T##viewClass: AnyClass?##AnyClass?#>, forSupplementaryViewOfKind: <#T##NSCollectionView.SupplementaryElementKind#>, withIdentifier: <#T##NSUserInterfaceItemIdentifier#>)复制代码

forSupplementaryViewOfKind:.sectionHeader,.sectionFooter

5、CollectionView的delegate和dataSource不设置会导致数据不显示之类的问题

转载于:https://juejin.im/post/59e573716fb9a0451f3001d4

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值