3

私の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];
        
    }

これは機能しますが、小さな問題が発生します。

最初は (1 つのセグメントで)、次のようになります。

修正前

値を変更すると、右側がわずかに切り取られます。

4セグメント

10セグメント

そして、1 つのセグメントに戻ります。

1 つのセグメントに戻る

制約は次のとおりです。

制約

クリッピングに非常に戸惑っていますが(おそらく数ピクセルが大きすぎるため)、修正方法がわかりません。または、等間隔のセルを取得するより良い方法はありますか?

4

1 に答える 1