NSPopUpButton 大小问题:宽度大于约束所施加的宽度

问题描述 投票:0回答:1

我在 OSX 中遇到子类 NSPopUpButton 的问题。 子类化没什么特别的,只是根据选择的字体绘制字符串和图像。

问题是,当我将 NSButton 添加到视图中并使用布局约束将其宽度设置为固定的 CGFloat 值时,按钮始终大于约束,并且其前导锚点也位于错误的位置(即到我最初设置的主锚的左侧)。

例如,如果我向窗口(例如矩形容器)中的视图添加一个按钮,并将其前导锚点固定到容器前导锚点,并为其指定 80px 的宽度,则该按钮将出现,其左侧距窗口 3px。容器前导锚点的左侧,其宽度为 87px,而不是 80。

无论我给按钮设置哪个宽度,3 和 7 px 的差异始终相同。

我还检查了绘制(矩形),收到的矩形实际上比我施加约束的常量宽 7px。

有人可以帮忙吗,一定有某种嵌入式 OSX 进程可以改变 NSControl 的宽度)。

由于我也在 iOS 中使用相同的子类(进行了必要的微小修改),因此问题不会出现,并且按钮的大小正确。

swift nspopupbutton nscontrol
1个回答
0
投票

印刷

NSPopUpButton().alignmentRectInsets
产生

NSEdgeInsets(top: 1.0, left: 3.0, bottom: 4.0, right: 4.0)

这就是布局锚点都有点偏离的原因。它们已移动了一些非零数量。

如果您不希望这样,请覆盖

alignmentRectInsets
以返回 0:

override var alignmentRectInsets: NSEdgeInsets {
    NSEdgeInsetsZero
}
© www.soinside.com 2019 - 2024. All rights reserved.