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

滚动 NSTableView 使一行居中

滚动 NSTableView 使一行居中,是指在使用 NSTableView 显示表格数据时,希望滚动到某一行并使其居中显示。这可以通过以下方法实现:

  1. 获取要居中显示的行的索引。
  2. 计算该行的位置。
  3. 滚动 NSTableView 到该行的位置。

以下是一个示例代码:

代码语言:swift
复制
func scrollTableViewToCenterRow(tableView: NSTableView, row: Int) {
    let rowRect = tableView.rect(ofRow: row)
    let scrollView = tableView.enclosingScrollView
    let scrollViewHeight = scrollView?.frame.height ?? 0
    let scrollViewVisibleRect = scrollView?.contentView.documentVisibleRect
    let scrollViewVisibleRectY = scrollViewVisibleRect?.origin.y ?? 0
    let rowRectY = rowRect.origin.y
    let rowRectHeight = rowRect.height
    let rowCenterY = rowRectY + rowRectHeight / 2
    let scrollViewCenterY = scrollViewVisibleRectY + scrollViewHeight / 2
    let scrollAmount = rowCenterY - scrollViewCenterY
    scrollView?.contentView.scroll(by: NSPoint(x: 0, y: scrollAmount))
}

在这个示例代码中,我们首先获取了要居中显示的行的索引,然后计算该行的位置,并滚动 NSTableView 到该行的位置。这样就可以实现滚动 NSTableView 使一行居中的功能。

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

相关·内容

css 使元素居中

css使元素水平居中 1.对于行内元素的水平居中 给父元素设置text-align:center 居中显示 2.定宽块状元素水平居中...也可将元素设置 display:block,将其变为块状元素,再按照上面的方法2 参考地址:http://blog.csdn.net/oHeHeHou/article/details/52820794 css使元素水平数值都居中...绝对定位下top left right bottom 都设置0,再margin: auto 就可以将元素垂直水平居中 css垂直居中 参考:http://blog.zhourunsheng.com/2012.../03/css-元素垂直居中的-6种方法/ 利用CSS进行元素的水平居中,比较简单,行级元素设置其父元素的text-align center,块级元素设置其本身的left 和 right margins...本文收集了六种利用css进行元素的垂直居中的方法,每一种适用于不同的情况,在实际的使用过程中选择某一种方法即可。 Line-Height Method ?

2.3K40
  • 我如何用一行Css代码使谷歌浏览器的数据网格滚动快10倍

    因此,我打开并开始录制,向下滚动列表一点,然后停止录制。...这就是我所看到的:DevTools / Performance 滚动"顶部链接站点"数据网格的性能配置文件,非常低的 FPS "任务"块上的那些红耳朵表明,在滚动时,某些东西需要的时间比可接受的时间要长...对于此记录,它显示时间主要用于更新图层,如紫色方块中的文本所示,其中表示:Update layer tree: 瀑布图显示, “Update layer tree” 是使滚动变慢的原因。...好消息 - 我试着应用一些秘密酱汁, 再次滚动, 现在感觉好多了。这也清楚地显示在它的性能配置文件: 滚动改进了很多!...我只是在面板上添加了一行CSS,说明它不会影响页面上其他元素的布局或样式: on the Elements table { contain: strict; } 如这里所示: 就这样

    2.2K10

    【布局技巧】Flex 布局下居中溢出滚动截断问题

    overflow: auto; } 效果就变成了这样: 我们尝试滚动一下这个容器,会发现一个致命问题:容器只能向左滚动,无法向右滚动,因此只能看到后半部分被截断的内容,而无法看到前半部分被截断的内容:...的样式进行排布,这样可以保证内容在滚动的过程中能够全部看到。...: flex-start 的样式进行排布,这样可以保证内容在滚动的过程中能够全部看到。...方法一:Flex 布局下关键字 safe、unsafe 其实,规范也已经注意到了布局下的这个居中滚动问题。...所以,margin: auto 也是一种居中非常重要的技巧,虽然我们常将这个技巧用于 flex 布局下的垂直居中。可以翻看一下上面提供的两篇文章。

    42910

    学会一行CSS即可提升页面滚动性能

    重点来了,既然该属性可以阻止元素成为鼠标事件,那么修改页面该属性值为 none,就能避免在滚动时鼠标频繁触发包括hover在内的任何鼠标事件,从而提升了页面滚动时的性能。...body { pointer-events: none;}使用滚动监听事件可实现灵活控制:let timer = nullwindow.addEventListener("scroll", function...() { document.body.style.pointerEvents = 'none'; // 滚动时禁用鼠标事件 if (timer) { clearTimeout(timer)...document.body.style.pointerEvents = 'auto'; // 释放 }, 100);})如果是移动端网页,没有鼠标事件是不是就不能用上面的属性来优化滚动了呢...不过需要注意的是,虽然该属性也有 none 值,但在这里并不适用,因为"滚动"也属于手势的一种,应该使用 manipulation 这个值,意为只允许进行滚动和持续缩放操作,也就相当于禁用了其他页面手势

    3.2K30

    纯CSS实现文字一行居中,多行左对齐的方法

    纯CSS实现文字一行居中,多行左对齐的方法 其实这种需求还是蛮常见的。主要用于产品列表页面,用于产品图片下面,显示产品的名称。但是其纯CSS实现实在是烧脑,一般就放掉这个需求,或者,使用JS实现。...问题描述 如何使用css实现文字一行居中,多行左对齐? 想要实现的效果为: 未知文字长度,当文字长度小于盒子宽度,也就是一行时,文字居中。...lang="en"> 文字测试 一行文字... 这里是比较长的两行文字 这应该是HTML的结构 让P居中,P中的文字左对齐 P的宽度根据文字的宽度伸缩...当文字为一行是,则P的宽度小于LI的宽度,又居中 则,看上去文字是局中的 当大于一行时,P的宽度和LI的宽度是一致的 文字就居左了 所以,CSS是: /* 傻大本粗RESET*/ *{

    2.6K10

    9个工作日常中非常实用的CSS技巧,一定要进来瞧瞧

    你可以通过自定义文本颜色选择使你的网站脱颖而出。 ? 使用选择伪元素为你网站上的文本提供个人风格。 ?...3)、 平滑滚动 你访问一些网站并尝试转到不同的部分,它会平滑地滚动到该部分。这不是高级编码,但在你的 CSS 中只需要一行代码,你就可以实现这一点。 效果如下: ?...6) 、文本居中显示 有时将 div 元素居中可能令人生畏,但你只需几行 CSS 即可将任何 div 居中。 ?...7)、 自定义滚动条 默认滚动条对用户没有吸引力,你可以做的是自定义此滚动条。 ?...我们只用 CSS 就能做到这一点,如果你想在跨浏览器上获得全面支持,最好使用 JavaScript 库来制作滚动条。 ?

    1.4K30

    一、首页、详情页、文章编辑页制作《iVX低代码无代码个人博客制作》

    左边为一个logo(红色)区域,右侧为一个头像区域: 那么此时创建一个行命名为标题,在这个行内创建两个行,一个命名为左一个命名为右: 在此需要设置左右两行的高度为包裹,并且为了使者两行能够同时在一行上显示...,每行的宽度还需要更改为 50%: 那么此时最外层的标题行再设置一个高度为 50 px 即可: 此时为了使标题头部内的元素距离上下左右有一定的距离,那么直接设置标题行的内边距有一定值即可:...那么此时我们还需要添加一个行,命名为主要内容,设置主要内容的宽度为60%,这样整个页面才能更好的显示在 PC 端,否则内容太宽不利于用户使用: 接着把整个标题放入主要内容之中,此时即可完成如下效果: 居中显示是因为整个页面设置了水平居中...: 因为当页面缩小后,当前页面若不使用x方向滚动,那么导航内容将会换行,在此设置了裁剪为 x 轴后则不会,并且隐藏滚动条更加美观。...可以使整个区域发生拖动效果,并且高度需要设置为撑开: 接着添加一个行,命名为内容,用于存放文章信息,设置其内边距使其内容距离边缘有一定距离: 接着创建一个文本,设置内容宽度和最大行号,不设置内容宽度会自动使内容超范围显示

    89920

    iVX 倒计时制作

    一、页面制作 首先创建一个相对应用项目,命名为计时器: 接着创建一个页面,设置页面的水平、垂直对齐为居中: 接着创建一个行,用于显示记录内容: 这个行设置宽度不占满 100%,...使其可以居中对齐,并且给予对应的背景色,设置内部元素为居中对齐,接着为了使内部元素可以举例上下左右有一点举例,可以再设置内边距增加其边缘厚度: 接着创建一个行,命名为倒计时,在里面用于显示对应的文本...,设置其文本底部对齐显示: 接着咱们先将初始文本加入其中,并且设置好对应的大小: 这些文本宽度都是33%,这样才能占满一行: 接着添加两个对应的按钮,具体设置宽高不再赘述:...接着创建一个行,命名为记录区域用于记录记下的时间,设置宽度为 300px,还需要注意的是,为了使其可以滚动,咱们需要对应的为其设置可以y轴裁剪隐藏滚动即可: 接着咱们再到这个行下创建一个循环创建和一个文本...每次触发时这个秒数就应该设置为加1: 当加到60s时,那么这个秒变量置零,随后分加1,所以在这里我们还需要创建两个变量,分和时: 此时我们还需要知道一个问题,那就是如何在小于 10 的时候使前面有一个

    1.4K20
    领券