首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在NSTableView中添加高度可变的NSTextView

在NSTableView中添加高度可变的NSTextView可以通过以下步骤实现:

  1. 创建一个NSTableView实例,并设置其代理和数据源。
  2. 在数据源方法中,为每个表格行创建一个自定义的NSTableCellView,并将其中的文本内容设置为NSTextView。
  3. 在自定义的NSTableCellView中,将NSTextView的最大高度设置为无限大,以便可以根据文本内容的多少自动调整高度。
  4. 实现NSTableViewDelegate中的tableView:viewFor:row:方法,将自定义的NSTableCellView返回给表格视图。
  5. 在NSTableViewDelegate中实现tableView:heightOfRow:方法,根据NSTextView的内容计算出合适的行高,并返回给表格视图。

下面是一个示例代码:

代码语言:txt
复制
import Cocoa

class ViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource {
    
    @IBOutlet weak var tableView: NSTableView!
    
    var data: [String] = ["Text 1", "Text 2", "Text 3"]
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.delegate = self
        tableView.dataSource = self
    }
    
    func numberOfRows(in tableView: NSTableView) -> Int {
        return data.count
    }
    
    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
        let cellIdentifier = NSUserInterfaceItemIdentifier("CustomCellView")
        
        if let cellView = tableView.makeView(withIdentifier: cellIdentifier, owner: self) as? CustomCellView {
            cellView.textView.string = data[row]
            return cellView
        }
        
        return nil
    }
    
    func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
        let cellIdentifier = NSUserInterfaceItemIdentifier("CustomCellView")
        
        if let cellView = tableView.makeView(withIdentifier: cellIdentifier, owner: self) as? CustomCellView {
            let textView = cellView.textView
            let textContainer = textView.textContainer
            let layoutManager = textView.layoutManager
            
            textContainer.containerSize = NSSize(width: textContainer.size.width, height: CGFloat.greatestFiniteMagnitude)
            layoutManager.ensureLayout(for: textContainer)
            
            let height = layoutManager.usedRect(for: textContainer).size.height
            return height
        }
        
        return 0
    }
}

class CustomCellView: NSTableCellView {
    @IBOutlet var textView: NSTextView!
}

在这个示例中,我们创建了一个自定义的NSTableCellView,其中包含一个NSTextView作为文本内容的容器。在tableView:heightOfRow:方法中,我们通过调整NSTextView的textContainer和layoutManager来计算出合适的行高。你可以根据实际需求进行修改和优化。

腾讯云相关产品和产品介绍链接地址:

请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在keras添加自己优化器(adam等)

\Anaconda3\envs\tensorflow-gpu\Lib\site-packages\tensorflow\python\keras 3、找到keras目录下optimizers.py文件并添加自己优化器...找到optimizers.pyadam等优化器类并在后面添加自己优化器类 以本文来说,我在第718行添加如下代码 @tf_export('keras.optimizers.adamsss') class...super(Adamsss, self).get_config() return dict(list(base_config.items()) + list(config.items())) 然后修改之后优化器调用类添加我自己优化器...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

45K30

何在onCreate获取View高度和宽度

何在onCreate获取View高度和宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...而这一切是发生在onCreate方法之后。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确。...那应该怎么onCreate获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列,最后在UI线程执行。

5.3K20
  • 何在 wordpress 网站添加搜索框

    转到添加新插件部分并搜索 Ivory Search (by Ivory Search)。 单击立即安装,然后激活它们。 一个新象牙搜索选项卡出现在左侧仪表板上。...Includes 部分允许你包含你希望用户搜索所有内容。例如,你可以只允许用户搜索电子商务网站产品,也可以允许他/她搜索某些页面或附件。...Includes 部分允许你从用户搜索中排除要隐藏内容。例如,如果你已启用用户搜索页面但你想从搜索结果中排除某些页面,你可以在排除部分执行此操作。...当你在 Ivory Search 表单工作时,将鼠标悬停到 Settings 选项(在 Ivory Search 下仪表板左侧面板上),以设置搜索框位置。这可以在页眉或页脚或水平菜单等。...菜单搜索部分可用选项是特定于主题。 在“Settings”部分,你可以设置搜索框外观。

    3.9K31

    【专业技术】如何在Linux添加系统调用

    Linux操作系统作为自由软件代表,它优良性能使得它应用日益广泛,不仅得到专业人士肯定,而且商业化应用也是如火荼。...在Linux,大 部分系统调用包含在Linuxlibc库,通过标准C函数调用方法可以调用这些系统调用。那么,对Linux发烧友来说,如何在Linux增 加新系统调用呢? ?...2 添加系统调用   如果用户在Linux添加系统调用,应该遵循几个步骤才能添加成功,下面几个步骤详细说明了添加系统调用相关内容。   ...(1) 添加源代码   第一个任务是编写加到内核源程序,即将要加到一个内核文件中去一个函数,该函数名称应该是新系统调用名称前面加上sys_标志。...假设新加系统调用为mycall(int number),在/usr/src/linux/kernel/sys.c文件添加源代码,如下所示: asmlinkage int sys_mycall(int

    2.4K40

    自己动手设计一款iOS自动构建发布工具 原

    NSTableView是一个很好选择,其使用方便,结合xib文件来编写cell,其开发效率也十分高。...你可以直接在终端通过命令行来调用Git命令,你可以使用Foundation框架NSAppleScript类来在OS X平台软件执行脚本命令,关于Git模块,你需要使用到命令如下:     ①拉取项目所有分支...使用NSTextView来显示输出信息,无论是执行脚本,还是上传文件,如果出错,都会有信息反馈。     8.记忆功能。    ...添加工程界面我采用是弹出窗口模式,正如上面分析,添加工程实质就是拿到Xcode项目文件地址,界面效果如下: ?...后续你可以为你自动构建工具添加轮询打包功能,将其运行在一台作为服务器Mac电脑上,它就是具有了持续集成功能。

    77520

    macOS开发之NSTableView应用详解

    NSTableView应用详解 一、引言     和iOS开发UITableView有很大差别,NSTableView并非是一个可滚动列表视图,其是一个不可滚动、支持多列多行原始列表视图。...若要使NSTableView支持滚动,通常会将其嵌套入NSScrollView控件。...这是一个最简单TableView示例,但是细读代码,麻雀虽小五脏俱全。首先NSTableView列是由NSTableColumn类描述。一个列表可以有多个列。...本文开头示例代码,Cell-BaseTableView必须实现两个协议方法是numberOfRowsInTableView和objectValueForTableColumn方法,第一个方法设置列表行数...需要注意,如果只实现这两个方法,则NSTableView会自动从列对象NSTableColume取具体行视图,通过dataCellForRow方法。

    4.8K21

    何在Integer类型ArrayList同时添加String、Character、Boolean等类型数据?

    先来看看面试官描述: “如何在Integer类型ArrayList同时添加String、Character、Boolean等类型数据呢?” 看到这里,你是不是想到下面的代码?...这种方式是最常用,在各类框架配置文件可以看到,:Spring、SpringMVC、Mybatis等等。...>... parameterTypes) Method methodName:表示被获取方法名字parameterTypes:表示被获取方法参数Class类型, String.class 表示获取指定一个本类方法...3、调用getMethod()方法获取指定Method。 4、调用invoke()方法将不同数据类型数据添加到list集合。...Test.addObjectToList(list, o); //向list添加Boolean类型数据 Boolean boolean1=true;

    2.1K20

    经典计算机视觉项目–如何在视频对象后面添加图像

    总览 在移动物体后面添加图像是经典计算机视觉项目 了解如何使用传统计算机视觉技术在视频添加logo 介绍 一位同事带来了一个挑战-建立一个计算机视觉模型,该模型可以在视频插入任何图像而不会扭曲移动对象...目录 了解问题陈述 获取该项目的数据 为计算机视觉项目设定蓝图 在Python实现该技术-添加logo! 了解问题陈述 这将是计算机视觉中非常罕见用例。将在视频嵌入logo。...因此,必须弄清楚如何将logo添加到背景某个位置,以使其不会阻碍视频中正在进行主要操作。...类似地,矩形像素值为1将被图6像素替换。最终输出结果如下所示: ? 这是将用于在视频跳舞家伙后面嵌入OpenCVlogo技术。开始做吧! 在Python实现该技术-添加logo!...第一维是图像高度,第二维是图像宽度,而第三维是图像通道数量,即蓝色,绿色和红色。 现在,绘制并查看logo和视频第一帧: plt.imshow(logo) plt.show() ?

    2.9K10

    何在WEBIDE个人版添加其它版本资源库「建议收藏」

    SAP 资源库不断在更新,怎么在本地WEBIDE中使用新版本控件呢?答案就是添加相应版本SDK到本地resource库 1....下载所需要版本源 这里下载所需要SDK 2....添加源到WEBIDE 只需要解压resource和test-resource这两个文件夹到本地WEBIDE路径下,参照本地orion所在目录路径 在这个路径下对应下载SDK版本新建一个文件夹...即可 指定了version 1.62.0之后,运行成功一次此时把neo-app.json文件"version": "1.62.0",参数删除,一样可以正常执行,但orion重启之后就不再有效...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    70320

    Mac OSX 开发基础控件学习之 NSOutlineView

    NSOutlineView-feature.png 在开发基于osxApplication过程,当我们需要显示一组列表结构数据时,比较容易想到控件是NSTableView;但如果你显示数据有层级结构时...,NSTableView就会面临一个问题:因为在osx,NSTableView没有分组功能( sections) 因为在cocoa 中提供了另一个控件供满足我们需求NSOutlineView它是继承自...NSTableView子类,是Mac OSX Application常用控件之一,与NSTableView相似,NSOutlineView也使用行和列来显示内容,但所不同是NSOutlineView...数据模型 NSOutlineViewData model 与NSTableView有些不同,因为NSOutlineView显示层级结构,因此Data model要能够表示出这种数据层级来:root...添加子节点数组属性 children ViewController 初始化模型数据 setup mode 设置NSOutlineViewDataSource

    1.6K20

    何在 Python 绘图图形上手动添加图例颜色和图例字体大小?

    本教程将解释如何使用 Python 在 Plotly 图形上手动添加图例文本大小和颜色。在本教程结束时,您将能够在强大 Python 数据可视化包 Plotly 帮助下创建交互式图形和图表。...但是,并非所有情况都可以通过 Plotly 默认图例设置来适应。本文将讨论如何在 Python 手动将图例颜色和字体大小应用于 Plotly 图形。...语法 Plotly  update_layout() 方法以及legend_font_color和legend_font_size参数可用于手动添加图例颜色和字体大小。...这些参数控制图上显示图例颜色和字体大小。 最后,使用 Plotly  show() 函数显示绘图。...Python 手动将图例颜色和图例字体大小添加到绘图图形

    78430
    领券