Objective c 具有动态大小和分段编辑器的UI分段控件

Objective c 具有动态大小和分段编辑器的UI分段控件,objective-c,uitoolbar,uisegmentedcontrol,Objective C,Uitoolbar,Uisegmentedcontrol,我在代码中创建一个UISegmentedControl,并使用从JSON响应中检索到的名称对其进行初始化。btnArray保存要在segmentedItems上显示的名称。第一项是固定的“全部”按钮 我的问题是源数组包含4-8个字符,因此这导致了段上的文本显示在segementItem之外的问题 有没有办法根据分段项目的数量让分段具有可变的大小,以便它仍然适合工具栏 此外,如何控制显示的文本的长度,即如果文本不适合内部,如何剪裁文本,类似于UIButton的相同行为 或者,有没有人有任何关于导航

我在代码中创建一个UISegmentedControl,并使用从JSON响应中检索到的名称对其进行初始化。btnArray保存要在segmentedItems上显示的名称。第一项是固定的“全部”按钮

我的问题是源数组包含4-8个字符,因此这导致了段上的文本显示在segementItem之外的问题

有没有办法根据分段项目的数量让分段具有可变的大小,以便它仍然适合工具栏

此外,如何控制显示的文本的长度,即如果文本不适合内部,如何剪裁文本,类似于UIButton的相同行为

或者,有没有人有任何关于导航解决方案带有“下一个”和“上一个”的提示,可以在其中切换新的分段?通过这种方式,我可以有一个固定的nr来始终显示前4个,并且有可能在控件上滑入新的段,也可以导航回前4个

这是我的密码:

segmentedControl = [[UISegmentedControl alloc] initWithItems:btnArray];
segmentedControl.tintColor = [UIColor grayColor];
segmentedControl.selectedSegmentIndex = 0;
segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.frame = CGRectMake(0, 0, 300, 30);

// Setup the target and actions for the segmentedControl
[segmentedControl addTarget:self 
                     action:@selector(selectGroup:) 
           forControlEvents:UIControlEventValueChanged];

// Add the UISegmentedControl as a UIBarButtonItem subview to the UIToolbar
UIBarButtonItem *segmentedItem = [[[UIBarButtonItem alloc] initWithCustomView:segmentedControl] autorelease];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
NSArray *groupsButtons = [NSArray arrayWithObjects:flexSpace, segmentedItem, flexSpace, nil];

[groupsToolbar setItems:groupsButtons];

听起来像是你要找的。如果有4个以上的项目,您将免费获得一个“更多…”按钮,显示其余项目。

Ok,最后使用Three20 TTTabBar和TTTabStrip解决了我的问题。