具有动态大小和SegmentedItems的UISegmentedControl

时间:2011-05-23 22:31:16

标签: objective-c uitoolbar uisegmentedcontrol

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

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

有没有办法让段具有可变大小,具体取决于有多少个segmentItem,因此它仍然适合工具栏?

另外,如何控制显示的文本的长度,即如果文本不适合内容则剪切文本的长度,类似于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];

1 个答案:

答案 0 :(得分:1)

听起来像UITabBar就是你要找的东西。如果有超过4个项目,您可以免费获得“更多...”按钮,其中显示其余项目。