Mac BCCollectionView的使用(一)

Mac应用开发NSCollectionView 纯代码用法遇到的坑 想开发一个VideoLine 加载视频关键帧的缩略图 于是想纯代码自定义一个VideoLineView (NSView), 里面加一个NSCollectionView ,但是开发的过程中就碰到无法回调代理方法func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: ... 阅读详情

         项目中需要显示很多影视的信息,类似图片墙那种结构,每个影视信息对应一个Cell。考虑到效率的问题,这种Cell必须能够复用。刚开始考虑使用NSTableView,但是当拉伸窗体时,需要动态的拉伸添加和删除列,非常的费劲。最后看苹果官方关于NSTableView的例子时,发现了NSCollectionView这个控件,查询NSCollectionView这种控件的用法时,发现了BCCollectionView这种控件。 据说当展示大量的数据时,BCCollectionView比苹果官方的NSCollectionView效率高很多。

         下面介绍这个控件的使用方式:

1. 创建BCCollectionView

BCCollectionView *collectionView = [[BCCollectionView alloc] initWithFrame:frame];
collectionView.delegate = self;

NSScrollView *scrollview = [[NSScrollView alloc] initWithFrame:frame];
[scrollview setHasVerticalScroller:YES];
[scrollview setAutohidesScrollers:YES];

[scrollview setDocumentView:collectionView];

[self addSubview:scrollview positioned:NSWindowAbove relativeTo:nil];

2. 加载数据

    NSArray *dataSource = [[[NSArray alloc] initWithObjects:@"data1", @"data2", @"data3", @"data3", nil] autorelease];
    [collectionView reloadDataWithItems:dataSource emptyCaches:YES];
          定义数据源,然后调用函数reloadDataWithItems加载数据。

3. 实现回调

          当调用BCCollectionView的函数reloadDataWithItems后,BCCollectionViewDelegate中定义的回调会被调用。

          下面一次说明常用的每个回调用法:

          3.1 返回每个Cell的大小

            - (NSSize)cellSizeForCollectionView:(BCCollectionView *)collectionView
            {
                return NSMakeSize(158, 140);
            }

           3.2 创建一个Cell,可以在这个回调中对Cell进行初始化

            - (NSViewController *)reusableViewControllerForCollectionView:(BCCollectionView *)collectionView
            {
                CellViewController *viewController = [[[CellViewController alloc] init] autorelease];
                // 这里可以对viewController进行一个初始化
                return viewController;
            }

            3.3 当Cell将来显示出来时,设置数据

            - (void)collectionView:(BCCollectionView *)collectionView willShowViewController(NSViewController *)viewController forItem:(id)anItem 
            {
                CellViewController *cellViewController = (CellViewController *)viewController;
                // cellViewController将会显示出来,这里需要对cellViewController设置要显示出来的数据。
            }
                            这里的viewController是将要显示出来的Cell, anItem是dataSource里面的一项。

             3.4 当一个Cell不可见时,释放其里面的资源

            - (void)collectionView:(BCCollectionView *)collectionView viewControllerBecameInvisible:(NSViewController *)viewController{
                
                CellViewController *cell = (CellViewController*)viewController;
                // 这里可以释放cell里面的一些资源
            }
              3.5 实现一个Cell的点击事件

            - (void)collectionView:(BCCollectionView *)collectionView didClickItem:(id)anItem withViewController:(NSViewController *)viewController {
                // 这里可以实现针对点击时间的一些处理
            }

               3.6 另外两个用到的回调,可以自己试试效果

            - (BOOL)collectionViewShouldDrawSelections:(BCCollectionView *)collectionView {
                return NO;
            }
            
            - (BOOL)collectionViewShouldDrawHover:(BCCollectionView *)collectionView {
                return NO;
            }
                文中出现的CellViewController是自己实现的Cell。


【Macos】Mac开发——NSCollectionView 被要求开发公司产品的mac版本,无奈只能开始摸索。刚开始信心满满,结果刚上手心态就崩了。你说他和uikit一样吧,也不一样。说不一样吧,还有那么点一样的成分。按照开发iOS的思路来做,一运行全是报红…… 累了。一步一个坑,资料也少,几乎是查一点写一点。 先简单写一下NSCollectionView的坑吧。 NSCollectionView能找到的资料大部分都是使用xib创建的,由于产品ios版本就是纯代码编写的,所以在开发mac版本的时候也是首选了纯代码,这里就有坑了。 最开始按照iOS的思路创建NSCol 阅读详情

相关推荐

macos开发-NSCollectionView

一. 简述 以可自定义的布局显示的数据项的有序集合。 @interface NSCollectionView : NSView 二. 官方属性方法 // 为收集视图提供数据的对象 @property (nullable, weak) id<NSCollectionViewDataSource> dataSource API_AVAILABLE(macos(10.11)); @property (nullable, weak) id<NSCollectionViewPrefetchin

ForgetSou | Blog 994

Mac BCCollectionView的使用(二)

使用BCCollectionView需要注意的几个问题: 1. 需要自己定义Cell, 这个Cell需要是一个NSViewController的子类。 2. 这里的Cell,需要从Xib加载,不能使用代码生成。(我用代码生成时,存在问题。) 3. 如果当一个Cell显示出来时,请求网络数据,然后数据返回时刷新这个Cell。这是就可能出现一个情况,当网络数据返回时,请求数据的Cell已经不在当

workhardupc 1106

基于MATLAB的太阳能光伏电力仿真,模拟每日太阳能发电,可视化功率曲线,并通过数值积分计算总能量输出。.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

Mac BCCollectionView的使用(三)

有时候需要设置BCCollectionView的header信息。介绍下BCCollectionView的使用方式。 1. 加载数据         这里跟不适用header时的加载方法不一样。 NSArray *dataSource = [[NSArray alloc] initWithObjects:@"data1", @"data2", @"data3", @"data4",

workhardupc 1640

人脸识别签到考勤系统实战源码

这是一套可直接运行的人脸识别智能签到考勤系统,基于OpenCV YuNet人脸检测与SFace特征识别实现,全程本机运行,数据保存在本地SQLite,不上传任何服务器。配套交付完整Python源码、9章实战教程(md/html/pdf三种格式)、逐步骤操作截图和答辩PPT讲解。 系统围绕五个功能模块展开:人脸注册支持照片批量导入并提取特征入库;识别签到支持照片或摄像头两种方式,实时框出人脸并标注姓名、相似度与考勤状态;考勤规则引擎按config.py里配置的上下班时间与宽限分钟,自动判定迟到、早退、缺勤;Tkinter管理面板完成人员管理、流水查询与月度汇总;最后通过openpyxl一键导出整月考勤矩阵,正常绿、迟到黄、缺勤红,Excel打开即用。 选型上特意选了YuNet+SFace路线:纯pip安装免编译,CPU单帧识别不到100ms,两个ONNX模型共约37MB,出自OpenCV官方模型仓库,毕设报告引用有据可查。教程第7章整理了16条Windows下真实踩过的报错及排查方法,第8章给出换模型、换人脸、加功能的二次开发路径。 适合做计算机视觉方向毕设或课程设计的学生,也适合想给班级、实验室、小团队搭一套本地签到工具的Python学习者。运行环境为Python 3.9以上、Windows 10/11,不需要GPU。 使用时先pip install -r requirements.txt装齐依赖,再运行download_data.py下载模型,最后启动main.py即可进入图形界面;命令行register、recognize、report子命令也可脱离界面单独调用。

【无人机航测】MATLAB重叠率与地面分辨率协同设计:航线间距及飞行方向优化系统 MATLAB 无人机航测重叠率设计|地面分辨率与航线间距计算

内容概要:本文档介绍了基于MATLAB R2025b开发的无人机航测重叠率与航线间距计算系统,旨在通过建立统一的航测几何计算体系,实现重叠率、地面分辨率与航线间距的动态协同设计。系统结合相机参数、飞行参数、地形数据与风场信息,通过自动化候选航向搜索与多目标优化,选择兼顾覆盖质量、飞行效率与安全性的最优航线方向。项目涵盖从参数输入、摄影测量计算、地形与安全修正,到候选路线生成、综合评价与结果可视化的全流程,并构建了五万组模拟数据用于算法验证与模型训练,支持桌面交互、批量处理与服务化部署,适用于多种复杂场景下的无人机航测任务规划。 适合人群:具备一定MATLAB编程基础和摄影测量知识的科研人员、工程技术人员及高校师生,尤其适合从事无人机航测、地理信息系统(GIS)、遥感与测绘等相关领域的从业者。 使用场景及目标:① 实现无人机航测任务中地面分辨率与航线间距的精确计算与动态优化;② 解决复杂地形与风场环境下航线方向选择困难、覆盖质量难以保障的问题;③ 通过自动化设计减少人为经验依赖,提升航测任务的可靠性与效率;④ 为后续的三维建模、正射影像生成与灾害应急评估等应用提供高质量的数据基础。 阅读建议:建议读者结合文中提供的完整代码示例与GUI界面设计,逐步实践参数配置、模型计算与结果分析流程。重点关注摄影测量公式推导、地形修正策略与多目标优化算法的实现细节,并利用模拟数据进行敏感性分析与模型验证,以深入理解系统的设计理念与工程应用价值。

Mac开发-NSCollectionView自定义使用

文章目录简介delegatedataSourcecollectionViewLayoutNSCollectionViewDelegateFlowLayout操作示例布局1 简介 相比于UICollectionView,NSCollectionView可以实现的功能都一样,主要是使用方式上注意点很多,这里推荐使用xib来自定义NSCollectionView和NSCollectionViewItem...

CaicaiNo.1 2928

【电力负荷预测】项目介绍 MATLAB实现基于BO-Transformer-LSTM贝叶斯优化算法(BO)优化Transformer-LSTM组合模型进行居民用户多步电力负荷预测(含模型描述及部分示例

内容概要:本文介绍了一个基于BO-Transformer-LSTM的组合模型,用于实现居民用户多步电力负荷预测的完整项目实例。该模型融合Transformer的全局注意力机制与LSTM的局部时序记忆能力,构建能够捕捉长时依赖与周期性特征的深度学习架构,并引入贝叶斯优化(BO)自动搜索最优超参数组合,提升预测精度与训练效率。项目涵盖从原始数据清洗、特征工程、滑动窗口样本构建、模型设计到超参数优化、反归一化及多步误差评估的全流程,强调时间顺序划分以防止信息泄露,并通过周期编码、外生变量融合等方式增强数据表达能力。文中提供了详细的MATLAB代码示例,包括数据预处理、网络搭建、贝叶斯优化配置和预测结果评估等关键步骤。 适合人群:具备一定机器学习和时间序列分析基础,熟悉MATLAB编程环境,从事电力系统预测、智能电网、负荷管理等相关领域的研究人员、工程师及研究生。 使用场景及目标:①应用于居民级或多用户聚合负荷的短期至中期多步预测(如未来24小时);②服务于配电系统运行调度、需求响应基线设定、家庭能源管理系统优化、分布式能源协调控制等实际工程场景;③为科研提供可复现的深度学习+贝叶斯优化的技术路线参考。 阅读建议:此资源以实际项目为导向,建议读者结合提供的代码逐步实现并调试模型,重点关注数据质量控制、时间特征编码、组合网络结构设计与贝叶斯优化稳定性之间的协同关系,在实践中深入理解多步预测中的误差累积机制与超参数敏感性问题。

mac、iOS端支持自定义布局的collection控件的实现与设计

介绍 collection控件用来实现界面的各种自定义布局,最常用其作为横向、竖向的布局控件。很早之前,系统对于collection的支持并不是很好。所以自己实现了支持自定义布局、自定义cell的collection控件。自定义的collection可以满足所有的产品特殊需求及动态效果,例如在某些特殊情况下可能需要除选中cell之外的其它cell执行布局...

weixin_33940102的博客 233

国央企创新负责人如何通过平台实现科研成果的快速识别与转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

PotPlayer自用皮肤

自用 PotPlayer 皮肤,仅微调了字体大小与颜色,是按个人习惯调整,未做适配性调整。

macOS 开发 - NSCollectionView & CNGridView

系统基本用法 1创建 CollectionView 2创建 CollectionViewItem 3给 item 传值 小结 CNGridView 的简单实用 创建 创建数据源 实现 delegate 和 datasource 方法 参考资料系统基本用法macOS 上的 CollectionView 可以不使用 dategate 和 datasource。 每一小格显示的内容,可以继承自 NSCo

AI工程化、开源分享、文档翻译、代码笔记 4829

2-shell及常用命令-续.pdf

2-shell及常用命令-续.pdf

mac开发解决NSScrollView/NSCollectionView 滚动冲突问题

场景:我们有时候再scrollView上在覆盖一个collection/scrollView,那么他们的滚动事件就会冲突, 百度很很久,然后自己查文档解决了,现在把解决方法公布如下: - (void)scrollWheel:(NSEvent *)event{ // NSLog(@"x:\t%f",event.deltaX); // NSLog(@"y:\t%f",event.deltaY); // NSLog(@"z:\t%f",event.deltaZ); // // N

880

【顶级EI复现】基于KKT条件与分段解析优化的双有源桥DC-DC变换器软开关协同最小应力闭环控制方法(Simulink仿真实现)

内容概要:本文详细介绍了一种基于KKT(Karush-Kuhn-Tucker)最优性条件与分段解析优化技术的双有源桥(DAB)DC-DC变换器闭环控制方法,旨在实现软开关条件下器件电压和电流应力的协同最小化,从而提升变换器的转换效率与系统可靠性。该方法通过建立精确的数学模型,结合KKT条件进行优化求解,并采用分段解析策略提高实时控制性能,在Simulink环境中完成了完整的闭环控制系统建模与仿真验证。作为“顶级EI复现”级别的研究成果,内容涵盖控制算法设计、优化机制分析、仿真架构搭建及结果对比,具有较强的理论深度与工程应用价值,适用于电力电子高频化、高效化发展的前沿研究方向。; 适合人群:面向具备电力电子、自动控制或电气工程等相关专业背景,熟悉Simulink仿真平台,且从事科研工作1年以上的研究生、博士生及科研人员;特别适合致力于DC-DC变换器拓扑优化、软开关技术、最小化开关应力控制、能量高效传输等领域研究的专业人士。; 使用场景及目标:① 复现高水平EI期刊论文中的先进优化控制算法;② 掌握KKT条件在非线性约束优化问题中的具体应用;③ 深入理解DAB变换器在不同工况下的软开关实现机制与应力抑制策略;④ 构建高精度仿真模型以支撑学术论文撰写、科研项目申报或实际工程系统的控制方案设计。; 阅读建议:建议结合提供的Simulink仿真模型同步学习,重点关注KKT条件推导过程与分段解析优化模块的实现逻辑。由于内容涉及较强的数学建模与优化理论,推荐具备扎实的电路理论、现代控制理论及数值优化基础后再行研读,并可参考同系列“顶级EI复现”资源以构建系统性知识体系。

交错并联图腾柱PFC变换器仿真设计(Simulink仿真实现)

内容概要:本文档系统性地介绍了基于Simulink平台的“交错并联图腾柱PFC变换器”仿真设计,聚焦于高效率功率因数校正技术的建模与实现。内容涵盖双闭环控制策略(电压外环与电流内环)、PI控制器设计、交错并联结构优化以及图腾柱拓扑的工作原理,旨在提升系统动态响应性能、降低输入电流谐波含量并改善功率因数。文档不仅提供详细的仿真模型构建流程,还配套Mathcad计算书用于参数设计与功率等级扩展,并列举了多种相关电力电子变换器的仿真案例,如三相维也纳整流器、LLC谐振变换器、双向Buck-Boost电路等,形成了一套完整的电力电子系统仿真资源体系,适用于从理论分析到工程实践的全流程学习与研究。; 适合人群:电气工程、自动化、电力电子及相关专业的高校本科生、研究生,以及从事新能源发电、电源设计、电能质量治理、工业自动化等领域的研发工程师;具备基本电路理论知识和Simulink/Matlab使用经验者更佳。; 使用场景及目标:①支持高校课程设计、毕业设计或科研项目中对先进PFC拓扑的仿真验证与性能优化;②帮助工程技术人员快速掌握图腾柱PFC的核心控制逻辑与建模方法,缩短产品开发周期;③作为电力电子系统教学与技术培训的标准化参考案例,强化理论与实践结合能力。; 其他说明:文档由“荔枝科研社”整理发布,所有资源可通过指定公众号或百度网盘链接获取,建议按照目录顺序系统学习,并结合提供的Mathcad计算书、参考文献及仿真文件进行参数验证与二次开发,以深化理解与应用能力。

MacOS开发(OC)----NSCollectionView类相关属性跟方法

目录 一、在storyboard中创建NsCollectionView 1.找到CollectionView控件,并拖到View中 2.设置datasource 3.在代码中实现数据源相关方法。 //在头件中增加实现NSCollectionViewDataSource协议 @interface ViewController : NSViewControlle...

代码行者-音频技术开发 1847

ROS2 Control实战:多机器人仿真与控制器管理

本文详细介绍了ROS2 Control在多机器人仿真中的应用,涵盖命名空间配置、控制器管理及性能优化。通过Gazebo仿真环境和ROS2 Control框架,开发者可以高效管理多个机器人的硬件抽象和控制器,实现资源隔离与平滑切换。文章还提供了常见问题排查和调试工具推荐,助力机器人开发实践。

u9v0w的博客 203

IOS 编码规范 【完善版】

命名规则 一般原则 清晰 命名最好清晰又简洁,但是不能过于简洁而失去了清晰。 不要用单词的简写,尽量用单词的全称。可以看看苹果的API格式,仿照苹果的命名,尽量用英文,而不是拼音。 insertObject:atIndex: //这是个好例子 insert:at: //不够清晰,插入的是什么?at又指的是什么? 名称通常不缩写,即使名称很长,也要拼写完全 代...

有酒有故事 2187

Linux安装MinIO(图文解说详细版)

最近开个新坑,就是在linux环境中操作开发环境,带大家玩转Linux,会整理出一篇Linux的专栏,欢迎大家订阅!! 富贵同学linux环境为CentOS7.8 版本。 上期跟大家说了一下OpenJDK的安装,这次说一下minio的安装 第一步,进入/opt 目录,创建minio文件夹 cd /opt mkdir minio 第二步,wget下载安装包: wget https://dl.minio.io/server/minio/release/linux-amd64/minio 第三步,进入m

编码人生 5万+

9、从统计到电路:未来物理不可克隆函数的基础

本文探讨了物理不可克隆函数(PUF)的关键技术,包括补偿环境影响、处理相关工艺变化、身份映射和测试方法。提出了一种基于新测试统计量Q的方法,有效提升了PUF的熵值和安全性。通过实验验证,新方法能够显著区分不同芯片,并增强PUF在不同环境下的适应性和可靠性,为未来PUF的设计与应用提供了重要基础。

pluto的博客 118
上一篇: mac下开发、工作工具推荐
下一篇: Mac BCCollectionView的使用(二)
workhardupc100
博客等级 码龄18年 129粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值