UISegmentedControl в почтовом приложении

Как мне получить UISegmentedControl, похожий на тот, который есть в почтовом приложении, чтобы он был того же цвета, что и кнопки UIToolbar (как если бы оба сегмента были в выбранном состоянии).

Я хочу использовать сегментированный элемент управления для тех же целей, что и Mail.

(на айпаде так серый, а не синий цвет)


person Jonathan.    schedule 22.09.2010    source источник
comment
Вы не можете изменить tintColor?   -  person tc.    schedule 23.09.2010


Ответы (5)


Это код из примеров кодов Apple ... NavBar и оба изображения, используемые в коде ... вы можете получить тот же вид, что и почтовое приложение.

alt textальтернативный текст

// "Segmented" control to the right
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:
                                            [NSArray arrayWithObjects:
                                                [UIImage imageNamed:@"up.png"],
                                                [UIImage imageNamed:@"down.png"],
                                             nil]];
[segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
segmentedControl.frame = CGRectMake(0, 0, 90, 30);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.momentary = YES;

defaultTintColor = [segmentedControl.tintColor retain];    // keep track of this for later

UIBarButtonItem *segmentBarItem = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];
[segmentedControl release];

self.navigationItem.rightBarButtonItem = segmentBarItem;
[segmentBarItem release];
person k-thorat    schedule 26.09.2010
comment
Я использую iPad, это код для iphone, неправильный цвет - person Jonathan.; 27.09.2010

Вы ищете недвижимость tintColor!

Когда вы используете UISegmentedControl, вы можете изменить его оттенок на любой цвет, который только можете придумать. Итак, если вы добавили UISegmentedControl в Interface Builder, вы бы стилизовали его в своем - (void)viewWillAppear:(BOOL)animated методе как таковом (при условии, что вы подключили его к @synthesized ivar:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    // Set the tintColor to match the navigation bar
    self.mySegmentedControl.tintColor = [UIColor colorWithRed:.94 green:.94 blue:.94 alpha:1];

    ... do whatever else in your viewWillAppear ...
}

Теперь очевидно, что вы захотите поиграть с красным, зеленым, синим и альфа-цветами, которые я вставил в пример кода выше, но вы можете буквально окрасить UISegmentedController любым желаемым цветом (или сделать его настолько прозрачным, насколько хотите. ), так что нужно просто найти те значения RGBA, которые вам подходят.

Помните, что согласно документам Apple the default value of this property is nil (no color). UISegmentedControl uses this property only if the style of the segmented control is UISegmentedControlStyleBar.

Удачи!

person Neal L    schedule 27.09.2010
comment
Спасибо, но я знаю об этом, мне нужно знать, какой оттенок Color использовать, чтобы получить тот же оттенок, что и обычный UIBarButtonItem. Есть ли частная собственность элемента UIBarButton, которую я могу использовать, чтобы просто получить стоимость - person Jonathan.; 28.09.2010
comment
Попробуйте красный: 0,15 зеленый: 0,19 синий: 0,31. Как я уже сказал, вам просто нужно немного поиграть, чтобы получить точный цвет, который вы хотите. В OS X есть отличный инструмент под названием DigitalColor Meter (он находится внутри Applications / Utilities). Вы можете использовать его, чтобы навести указатель мыши на что-либо на экране, и он даст вам именно ту цветовую комбинацию, которую вы ищете. - person Neal L; 28.09.2010
comment
Ну .15, .19 и .31 нигде рядом с другими кнопками, но я думаю, мне просто нужно возиться :( - person Jonathan.; 01.10.2010
comment
Что ж, элемент UIBarButton - это градиент, а не сплошной цвет, поэтому, если нет частного метода для получения цвета оттенка элементов управления, самое близкое, что вы можете получить, это (цвет оттенка не имеет того же градиента, что и UIBarButtonItem) [UIColor colorWithRed:(151.0/255.0) green:(156.0/255.0) blue:(162.0/255.0) alpha:1] - person Jonathan.; 01.10.2010

Я не знаю точно, что вы имеете в виду ... но я считаю, что "UISegmentedControlStyleBar" как segmentedControlStyle может быть.

segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar

Вы также можете установить это свойство в IB! (Это свойство называется "стиль")

person Community    schedule 22.09.2010
comment
Я знаю, но спасибо за ответ, я имею в виду, что в Mail сегментированный элемент управления (кнопки вверх и вниз) имеет тот же цвет, что и элемент UIbarbutton, однако я добавил сегментированный элемент управления в IB, и он был заметно светлее. - person Jonathan.; 23.09.2010

Стиль, который я ищу, недокументирован: это стиль 4. Похоже, он здесь управляет вверх / вниз: http://media.mobilemeandering.com/wp-content/uploads/2010/04/ipad-mail-message-2.png ( не мое изображение кстати)

Он в основном заставляет все сегменты выглядеть выделенными, он предназначен для мгновенных нажатий и фактически представляет собой несколько кнопок панели инструментов, нажатых вместе. Таким образом, он не может быть установлен в IB, но должен быть установлен в коде или вручную в файле nib / xib, открыв перо как текстовый файл.

person Jonathan.    schedule 25.11.2010

Я не уверен, что точно понимаю, что вы пытаетесь сделать, но я попробую.

Решение не очевидно, вам нужно использовать UISearchDisplayController, чтобы получить соответствующие UISearchBar и UISegmentedControl.

См. Пример кода TableSearch.

person christo16    schedule 30.09.2010
comment
Однако экран больше, поэтому мне не нужна панель поиска, также мне нужны другие элементы кнопок панели рядом с сегментированным элементом управления. - person Jonathan.; 01.10.2010