一些 AppKit 的坑
NSTextField 在 NSTableView 中需要先点一次再点一次才能编辑、且 hover 时鼠标指针不变化
在 storyboard 里,将 NSTableView 的 Highlight 设置为 None
NSTableCellView 动态高度实现
- 在 VC 里持有一个 measuringCell
- VC 实现 tableViewDelegate 的 rowHeight 方法,设置好 measuringCell 数据后,传入 tableView.bounds.width - 32 计算所需的高度并返回。32 是个神奇的数字,cell 本身确实比 tableView 要窄,32 是差值,可能不同系统版本不一样,没有试过
- 注意,如果使用 NSDiffableDataSource,在设置好 dataSource 之后,在 append 任意数据之前要先设置好 tableView 的 delegate,要不然会失效
NSTableCellView horizontal grid frame
NSTableCellView 横向分割线的 frame 与 cell 的 subviews 中最后一个 NSTextField (非 NSTextField 的其他 view 还没试,我的场景最后一个 subview 是 NSTextField验证了,NSView 不行,只能是 NSTextField)有关
NSTextField AutoLayout 动态高度的实现:
- Subclass NSTextField,override intrinsicContentSize,返回使用
preferredMaxLayoutWidth计算得来的 size - 在 delegate 的
controlTextDidChange方法中,调用 textField 的invalidateIntrinsicContentSize;同时,需要访问一下stringValue,否则不会立即变更
NSTableViewDiffableDataSource
- 在调用
snapshot()前,要先初始化过 dataSource:手动创建一个 snapshot,然后让 dataSource apply - 继承 NSTableViewDiffableDataSource 以实现 NSTableViewDataSource 的方法时,要用 @objc 标记这些方法,否则不会被调用
- 实现 Drag & Drop,在
acceptDrop方法中移动相应的 row 时,最后 apply snapshot 的时候 animatingDifferences 要设置成 false,否则 cell 会诡异地消失
NSTableRowView
Finder 风格的选中样式(只有浅灰色背景,且文字颜色不翻转):
override var isEmphasized: Bool {
get { false }
set {}
}
Override drawSelection 方法会有诡异的问题:选中让 cell 行高发生变化,在 tableView 初始化后第一次选中一个 cell,行高会变,但是 cell 的高度不会
一些 AppKit 的坑的更多相关文章
- APPKIT打造稳定、灵活、高效的运营配置平台
一.背景 美团App.大众点评App都是重运营的应用.对于App里运营资源.基础配置,需要根据城市.版本.平台.渠道等不同的维度进行运营管理.如何在版本快速迭代过程中,保持运营资源能够被高效.稳定和灵 ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例
前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...
- Spark踩坑记——Spark Streaming+Kafka
[TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 踩石行动:ViewPager无限轮播的坑
2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...
- 为C# as 类型转换及Assembly.LoadFrom埋坑!
背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...
- 首个threejs项目-前端填坑指南
第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水好深,满满的都是坑,填都填不过来.经过老板20天惨无人道的摧残,终于小有成就. 因为第一次搞 ...
- dll文件32位64位检测工具以及Windows文件夹SysWow64的坑
自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...
- 关于微软HttpClient使用,避免踩坑
最近公司对于WebApi的场景使用也越来越加大了,随之而来就是Api的客户端工具我们使用哪个?我们最常用的估计就是HttpClient,在微软类库中命名空间地址:System.Net.Http,是一个 ...
随机推荐
- 从零开始的 dbt 入门教程 (dbt core 开发进阶篇)
引 在上一篇文章中,我们花了专门的篇幅介绍了 dbt 更多实用的命令,那么我们继续按照之前的约定来聊 dbt 中你可能会遇到的疑惑以及有用的概念,如果你是 dbt 初学者,我相信如下知识点一定会对你有 ...
- 使用sqlmap执行SQL注入并获取数据库用户名
Sqlmap介绍 sqlmap支持MySQL, Oracle,PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, ...
- rsyslog 系统日志收集上报(可增加自定义项目日志)
Linux 自带应用,没有复杂的依赖关系却有强大的日志采集上报功能 本文以上报阿里云为例 1.基础配置讲解 /etc/rsyslog.conf 为其主配置文件(不用动) /etc/rsyslog.d/ ...
- win32- 函数运行速度测试
LARGE_INTEGER nFreq, t1, t2; int loop_count = 0; double dt; double time_sum = 0; QueryPerformanceFre ...
- 【Azure Developer】在使用中国区 Azure AD B2C时, AUTHORITY的值是什么呢?
问题描述 使用MSAL4J的SDK调用(源码地址:https://github.com/Azure-Samples/ms-identity-msal-java-samples/tree/main/3. ...
- 用几张图实战讲解MySQL主从复制
本文分享自华为云社区<结合实战,我为MySQL主从复制总结了几张图!>,作者: 冰 河. MySQL官方文档 MySQL 主从复制官方文档链接地址如下所示: http://dev.mysq ...
- 最小生成树(二)Prim算法
一.思想 1.1 基本概念 加权无向图的生成树:一棵含有其所有顶点的无环连通子图. 最小生成树(MST):一棵权值最小(树中所有边的权值之和)的生成树. 1.2 算法原理 1.2.1 切分定理 切分定 ...
- 轻松驾驭Python格式化:5个F-String实用技巧分享
F-String(格式化字符串字面值)是在Python 3.6中引入的,它是一种非常强大且灵活的字符串格式化方法. 它允许你在字符串中嵌入表达式,这些表达式在运行时会被求值并转换为字符串,这种特性使得 ...
- dev-sidecar 让github 可以正常访问
dev-sidecar https://gitee.com/docmirror/dev-sidecar/releases
- vscode 格式化 vue 等文件的 配置 eslint vetur prettier Beautify
需求 自动格式化需求 多行回车 合并一行,去分号 最后一个逗号,自动删除,符合eslint 结果 虽然能用了,但是 百度好几个方案,也不知道哪个对哪个,太忙没时间弄了. 配置文件记录 eslint 得 ...