gpt4 book ai didi

objective-c - NSSplitView:在视网膜屏幕上拖动时分隔线厚度发生变化

转载 作者:行者123 更新时间:2023-12-03 17:33:47 27 4
gpt4 key购买 nike

上下文

我的应用程序中有一个 NSSplitView,它有 3 个 Pane 。我对 NSSplitView 进行了子类化,它有一个覆盖:

-(CGFloat) dividerThickness { return 1.0f; }

我已禁用所有限制分隔符最小/最大点和调整 subview 大小等的委托(delegate)方法。

<小时/>

问题

当我在视网膜屏幕上拖动任何分隔线时,分隔线的厚度会在拖动过程中发生波动。观看此视频:http://incident57.com/divider.mp4

无论我使用什么厚度的分隔线,都会发生这种情况——拖动过程中厚度总是变化约 1 像素。

这种情况不会发生在非视网膜屏幕上。当窗口本身大小调整时,它也不会发生。仅当拖动分隔线本身时,分隔线宽度才会波动。

(如果你仔细观察,你会发现 View 之间有一些空白,看起来 NSSplitView 应该 正在绘制分隔线,但事实并非如此。看最后视频中棕色选定表格行的位置。)

<小时/>

我需要什么

如何解决此问题,以便在视网膜屏幕上拖动时分隔线宽度保持不变?

最佳答案

我通过实现这个 NSSplitViewDelegate 方法解决了这个问题:

- (CGFloat) splitView:(NSSplitView *)splitView constrainSplitPosition:(CGFloat)proposedPosition ofSubviewAt:(NSInteger)dividerIndex
{
return floor(proposedPosition);
}

还值得指出的是,只有当 NSSplitView Pane 中的 subview 是 NSScrollView 时,此问题才会出现。 Pane 内的普通 NSView 不会导致分隔线宽度波动。

关于objective-c - NSSplitView:在视网膜屏幕上拖动时分隔线厚度发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28640970/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com