Как установить изображение для UISegmentedControl в iPhone? - PullRequest
16 голосов
/ 09 июня 2010

Я новичок в разработке для iPhone.Я создал UISegmentedControl, имеющий 2 сегмента.Я хочу отображать изображения для каждого сегмента вместо заголовка.Вот мой код

NSArray *itemArray = [NSArray arrayWithObjects: @"segment1", @"segment2", nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.frame = CGRectMake(5,100,300,40);
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
segmentedControl.selectedSegmentIndex = 1;
[self.view addSubview:segmentedControl];
[segmentedControl release]; 

Но вместо того, чтобы отображать заголовок, сегмент1 и сегмент2, его следует заменить изображениями, которые у меня есть.

Ответы [ 5 ]

26 голосов
/ 09 июня 2010

Это почти точно то, что вы имели, просто передайте массив UIImages вместо NSStrings.

NSArray *itemArray = [NSArray arrayWithObjects:
    [UIImage imageNamed:@"segment1.png"],
    [UIImage imageNamed:@"segment2.png"],
    nil];
22 голосов
/ 03 мая 2011

Если вы хотите изменить образ во время выполнения, используйте следующий метод:

- (void)setImage:(UIImage *)image forSegmentAtIndex:(NSUInteger)segment

например:.

[segmentedControl setImage:[UIImage imageNamed:@"segment1.png"] forSegmentAtIndex:0];
12 голосов
/ 18 июля 2014

Это просто сделать с помощью Interface Builder ( Инспектор атрибутов * вкладка 1004 *).

Image setting with IB

Также вы можете установить один сегментс изображением, а другой с текстом.

Result

Счастливого xCoding!)

4 голосов
/ 08 июля 2016

Для пользователя, создающего интерфейс, установите «render as» как «исходное изображение» вместо значения по умолчанию.В моем случае это покажет после запуска.Это может сработать.@jcpennypincher enter image description here

1 голос
/ 24 июня 2013

В xcode 4.6.3 в конструкторе интерфейсов есть возможность добавить изображение к элементам управления сегмента.

...