具有动态大小和 SegmentedItems 的 UISegmentedControl
Posted
技术标签:
【中文标题】具有动态大小和 SegmentedItems 的 UISegmentedControl【英文标题】:UISegmentedControl with dynamic size and SegmentedItems 【发布时间】:2011-05-23 22:31:16 【问题描述】:我在代码中创建了一个 UISegmentedControl 并使用从 JSON 响应中检索到的名称对其进行初始化。 btnArray 保存要在分段项上显示的名称。第一项是固定的“全部”按钮。
我的问题是源数组包含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];
【问题讨论】:
好的,最终使用 Three20 TTTabBar 和 TTTabStrip 来解决我的问题。 Three20 【参考方案1】:听起来像 UITabBar 是您正在寻找的。如果超过 4 个项目,您将免费获得一个“更多...”按钮,显示其余项目。
【讨论】:
以上是关于具有动态大小和 SegmentedItems 的 UISegmentedControl的主要内容,如果未能解决你的问题,请参考以下文章
如何使具有动态内容的reactstrap模态可调整大小和可拖动?
具有动态大小单元格间距问题的 UICollectionViewCell