在 UISegmentedControl 中制作 2 个大小为 1 的段

Make 2 segments the size of 1 in UISegmentedControl

我有一个 UISegmentedControl,在 storyboard 中创建了 3 个片段。我想以编程方式添加另一个段,并使中间 2 个段的大小为 1 个段。这是一张图片来说明:

storyboard中:

我想以编程方式实现的目标:

这是我试过的:

CGFloat segmentWidth = self.segment.frame.size.width;

[self.segment insertSegmentWithTitle:@"titleName" atIndex:2 animated:NO];

[self.segment setWidth:segmentWidth / 4 forSegmentAtIndex:1];
[self.segment setWidth:segmentWidth / 4 forSegmentAtIndex:2];

[self.segment setWidth:segmentWidth / 3 forSegmentAtIndex:0];
[self.segment setWidth:segmentWidth / 3 forSegmentAtIndex:3];

它并没有给我带来理想的效果。宽度很奇怪。我怎样才能使宽度像上面的第二张图片一样?

  1. 1/3的一半不是1/4。是1/6.

  2. 您可能想要设置 三个 段并让最后一个自动设置以填充剩余部分。

  3. 不要 运行 你的代码太早 - 如果你这样做,分段控件可能还没有达到它的最终帧,所以你的 segmentWidth 将是错误的。