UISegmentedControl с динамическим размером и SegmentedItems - PullRequest
0 голосов
/ 24 мая 2011

Я создаю UISegmentedControl в коде и инициализирую его именами, полученными из ответа JSON.BtnArray содержит имена для отображения в segmentedItems.Первый элемент - это фиксированная кнопка «Все».

Моя проблема заключается в том, что исходный массив содержит от 4 до 8, поэтому возникает проблема с отображением текста в сегменте за пределами segementItem.

Можно ли каким-либо образом разрешить сегменту иметь переменный размер в зависимости от того, сколько сегментов элемента, чтобы он все еще помещался на панели инструментов?

Кроме того, как я могу контролировать длину отображаемого текстато есть обрезать текст, если он не помещается внутри, аналогично тому же поведению для кнопки UIB.

Или у кого-нибудь есть какие-либо советы по использованию навигационного решения со словами «следующий» и «предыдущий», где можно переключать новые сегменты?Таким образом, я мог бы иметь фиксированный номер, чтобы всегда отображать первые 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 Ответ

1 голос
/ 24 мая 2011

Звучит как UITabBar - это то, что вы ищете. Если их более 4, вы бесплатно получаете кнопку «Еще ...», на которой отображаются остальные элементы.

...