Как изменить размер шрифта сегментированного элемента управления и не дать ему вернуться к размеру по умолчанию после изменения сегмента - PullRequest
4 голосов
/ 29 февраля 2012

Я использую следующий код для реализации и последующего изменения размера шрифта каждого сегмента в UISegmented Control

//Set up segment control
UISegmentedControl *tempSegmentControl = [[UISegmentedControl alloc]initWithItems:[NSArray arrayWithObjects:@"Friends",@"Popular", nil]];
tempSegmentControl.frame = CGRectMake(-8, -1, 336, 30);

self.segmentControl = tempSegmentControl;
[self.segmentControl setWidth:168 forSegmentAtIndex:0];
[self.segmentControl setWidth:168 forSegmentAtIndex:1];
self.segmentControl.selectedSegmentIndex = 0;
[self.segmentControl addTarget:self action:@selector(toggleControls:) forControlEvents:UIControlEventValueChanged];
[self.segmentControl setSegmentedControlStyle:UISegmentedControlStylePlain];

//TO CHANGE FONT SIZE OF EACH SEGMENT
for (id segment in [self.segmentControl subviews]) 
{
    for (id label in [segment subviews]) 
    {
        if ([label isKindOfClass:[UILabel class]])
        {
            [label setTextAlignment:UITextAlignmentCenter];
            [label setFont:[UIFont boldSystemFontOfSize:14]];
        }
    }           
}

Первоначально это работает (см. Скриншот ниже)

enter image description here

Однако после нажатия на вкладку «популярные» (неактивная вкладка) размер шрифта возвращается к исходному размеру шрифта по умолчанию

enter image description here

Что можно сделать, чтобы размер шрифта не вернулся к значению по умолчанию?

Ответы [ 2 ]

9 голосов
/ 13 марта 2012

Вероятно, не самый чистый способ, но он работает, если вы запустите цикл for для события 'Value Changed' элемента управления UISegmentedControl.

Обновление: Это правильный способ, доступный в iOS 5 и более поздних версиях:

NSDictionary *textAttributes = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:14], UITextAttributeFont, nil];
[self.segmentControl setTitleTextAttributes:textAttributes forState:UIControlStateNormal];
1 голос
/ 17 апреля 2012

http://chris -software.com / index.php / tag / uisegmentedcontrol /

проверить это его

codeButton.segmentedControlStyle = UISegmentedControlStyleBar;
codeButton.momentary = YES;
...