gpt4 book ai didi

objective-c - NSSegmentedControl 中大小相等的单元格

转载 作者:搜寻专家 更新时间:2023-10-30 20:24:35 25 4
gpt4 key购买 nike

对于我的 NSSegmentedControl,我用它来显示一个栏来控制 NSTableView。我设置了代码以编程方式控制大小:

for (NSInteger i = 1; i <= numberOfSegments; i++) {

CGSize textSize = [[NSString stringWithFormat:@"Workspace %ld", (long)i] sizeWithAttributes:@{NSFontAttributeName: [NSFont systemFontOfSize:13.0f]}];

NSInteger segmentWidth = self.workspaceControl.frame.size.width / numberOfSegments;

if (textSize.width > segmentWidth) {
[self.workspaceControl setLabel:[NSString stringWithFormat:@"%ld", (long)i] forSegment:i - 1];
} else {
[self.workspaceControl setLabel:[NSString stringWithFormat:@"Workspace %ld", (long)i] forSegment:i - 1];
}

[self.workspaceControl setWidth:segmentWidth forSegment:i - 1];

}

这是有效的,但出现了一个小问题。

一开始(有一段)看起来像这样:

before modification

当我更改值时,右侧会稍微被剪掉。

4 segments

10 segments

然后回到一个片段:

back to one segment

约束条件如下:

constraints

我对裁剪感到非常困惑(可能是因为几个像素太大了),但我不知道如何修复它,或者是否有更好的方法来获得均匀间隔的单元格?

最佳答案

在我的测试中,尽管 setWidth(_ width: CGFloat, forSegment segment: Int) 采用 CGFloat。因此,段的总宽度加起来可能超过控件本身的宽度。

要获得偶数段,请将 segmentWidth 通过 floor。此外,为控件设置一个手动宽度,并通过 centerXAnchor 而不是通过前导和尾随 anchor 对其进行水平约束,以保持其居中对齐。

缺点:宽度必须硬编码,左右边距可能与您的其他 View 不完全匹配。

关于objective-c - NSSegmentedControl 中大小相等的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35751953/

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