2013-08-25 5 views
3

в IOS Application, мой текущий контроля UISegmented для мужского и женского пола выглядит следующим образом:Как установить UISegmentedControl Фоновое изображение через раскадровку?

enter image description here

Теперь я хочу, чтобы изменить фоновое изображение этих segments.So я изменил в раскадровке, как показано ниже:

For Segment 0: 

enter image description here

For Segment 1: 

enter image description here

After this changes,I got the result as below : 

enter image description here

Почему эти изображения перекрываются друг с другом? любая конкретная причина или размер этих сегментов соответствует размеру изображения? Как установить фоновое изображение сегментов, не влияя на размер сегментов (полное изображение должно отображаться на фоне сегмента, а не перекрываться)?

Любая помощь будет оценена по достоинству.

+0

я нашел с помощью UISegmentedControl было просто болью при использовании изображений. Возможно, вы можете создать свой собственный подкласс UIView, чтобы получить максимальную гибкость - вот что я в итоге сделал. – SEG

+0

@SEG: Но тогда мы не можем получить функции сегментированного управления, когда мы используем наш собственный подкласс UIView. – Ponting

+0

Да, вам нужно воссоздать это. Создайте метод настройки, в котором вы передаете свои изображения и строки. В этом методе добавьте необходимое количество UIButton (установите соответствующие изображения и/или строки), установите тег в каждый UIButton, чтобы узнать, какая кнопка была нажата. В обработчике сенсорных клавиш кнопок вызовите метод или блок делегата. Это не так сложно воссоздать UISegmentedControl ... – SEG

ответ

5

Постарайтесь внести изменения в код следующим образом.

[self.segmentedControl setDividerImage:[UIImage imageNamed:@"style_segmented_control_delimiter.png"] 
        forLeftSegmentState:UIControlStateSelected 
         rightSegmentState:UIControlStateNormal 
           barMetrics:UIBarMetricsDefault]; 

    [self.segmentedControl setDividerImage:[UIImage imageNamed:@"style_segmented_control_delimiter.png"] 
        forLeftSegmentState:UIControlStateNormal 
         rightSegmentState:UIControlStateNormal 
           barMetrics:UIBarMetricsDefault]; 

    [self.segmentedControl setBackgroundImage:[UIImage imageNamed:@"style_segmented_control_normal_mid.png"] 
            forState:UIControlStateNormal 
           barMetrics:UIBarMetricsDefault]; 

    [self.segmentedControl setBackgroundImage:[UIImage imageNamed:@"style_segmented_control_press_mid.png"] 
            forState:UIControlStateSelected 
           barMetrics:UIBarMetricsDefault]; 
0

Основная причина перекрытия изображений - размер изображения в зависимости от размера сегмента.

  • Правильный размер изображения. Например, если у вас есть два сегмента, задайте образ размера (totoalWidthOfSeg/2).
  • Там может некоторый разрыв может появиться между сегментами для этого мы должны установить devider изображение также
Смежные вопросы