私の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 つのセグメントで)、次のようになります。
値を変更すると、右側がわずかに切り取られます。
そして、1 つのセグメントに戻ります。
制約は次のとおりです。
クリッピングに非常に戸惑っていますが(おそらく数ピクセルが大きすぎるため)、修正方法がわかりません。または、等間隔のセルを取得するより良い方法はありますか?