具有动态大小和SegmentedItems的UISegmentedControl

问题描述

|| 我用代码创建一个UISegmentedControl,并使用从JSON响应中检索的名称对其进行初始化。 btnArray保留要显示在segmentedItems上的名称。第一项是固定的“全部”按钮。 我的问题是源数组包含4到8,因此这会导致段上的文本显示在segementItem之外的问题。 有什么方法可以让段具有可变的大小,具体取决于有多少segmentItems以便它仍适合工具栏内的大小? 另外,如何控制所显示文本的长度,即在文本不适合内部时将其剪切,类似于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,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];
    

解决方法

听起来像是您正在寻找的UITabBar。如果项目多于4个,您将免费获得一个“更多...”按钮,其中显示其余项目。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...