2014-02-06 3 views
2

Я работаю над приложением, которое должно работать как на iOS 6, так и на iOS 7 и иметь одинаковый плоский дизайн для обоих.iOS 6 UISegmentedControl с дизайном iOS 7

Я пытаюсь настроить мой UISegmentedControl, чтобы иметь границы, угловой радиус и все, но я не могу понять, как это сделать. Пока что у меня есть плоский фон.

Есть ли у кого-нибудь совет, чтобы iOS 6 UISegmentedControl выглядел как iOS 7?

EDIT:

Я хотел бы иметь

enter image description here

вместо

enter image description here

ответ

3

Вы можете использовать ниже код:

// To set colour of text 
     NSDictionary *attributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]; 
     [segmentedControl setTitleTextAttributes:attributes forState:UIControlStateNormal]; 
     NSDictionary *highlightedAttributes = [NSDictionary dictionaryWithObject:[UIColor whiteColor] forKey:UITextAttributeTextColor]; 
     [segmentedControl setTitleTextAttributes:highlightedAttributes forState:UIControlStateHighlighted]; 

     // Change color of selected segment 

     segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar; 

     UIColor *newTintColor = [UIColor colorWithRed: 255/255.0 green:100/255.0 blue:100/255.0 alpha:1.0]; 
     segmentedControl.tintColor = newTintColor; 

     UIColor *newSelectedTintColor = [UIColor clearColor]; 
     [[[segmentedControl subviews] objectAtIndex:0] setTintColor:newSelectedTintColor]; 

И седения закругленных углов вы можете использовать ниже код:

// Add rounded yellow corner to segmented controll view 
[segmentedControl.layer setCornerRadius:4.0f]; 
[segmentedControl.layer setBorderColor:[UIColor colorWithRed:1.0 green:0.7 blue:0.14 alpha:1.0].CGColor]; 
[segmentedControl.layer setBorderWidth:1.5f]; 
[segmentedControl.layer setShadowColor:[UIColor blackColor].CGColor]; 
[segmentedControl.layer setShadowOpacity:0.8]; 
[segmentedControl.layer setShadowRadius:3.0]; 
[segmentedControl.layer setShadowOffset:CGSizeMake(2.0, 2.0)]; 
+0

Дело в том, что этот код не создает никаких границ или радиуса:/ –

+0

Теперь вы можете проверить edit :) – Ashutosh

+0

Это doesn Я работаю для меня на iOS 6, даже после настройки. – CVertex

0

Вы можете посмотреть на пример here или взять custom control и изменения его изображения в соответствии с вашими потребностями.

Вот пример того, как вы можете создать подкласс UISegmentedControl:

@implementation CustomSegmentedControl 
-(id)initWithItems:(NSArray *)items 
{ 
    self = [super initWithItems:items]; 
    if (self) { 

     [self setDividerImage:[UIImage imageNamed:@"segmented-control-divider-none-selected"] 
      forLeftSegmentState:UIControlStateNormal 
      rightSegmentState:UIControlStateNormal 
        barMetrics:UIBarMetricsDefault]; 
     [self setDividerImage:[UIImage imageNamed:@"segmented-control-divider-left-selected"] 
      forLeftSegmentState:UIControlStateSelected 
      rightSegmentState:UIControlStateNormal 
        barMetrics:UIBarMetricsDefault]; 
     [self setDividerImage:[UIImage imageNamed:@"segmented-control-divider-right-selected"] 
      forLeftSegmentState:UIControlStateNormal 
      rightSegmentState:UIControlStateSelected 
        barMetrics:UIBarMetricsDefault]; 

    // Set background images 
    UIImage *normalBackgroundImage = [UIImage imageNamed:@"segmented-control-normal"]; 
    [self setBackgroundImage:normalBackgroundImage 
        forState:UIControlStateNormal 
        barMetrics:UIBarMetricsDefault]; 
    UIImage *selectedBackgroundImage = [UIImage imageNamed:@"segmented-control-selected"]; 
    [self setBackgroundImage:selectedBackgroundImage 
        forState:UIControlStateSelected 
        barMetrics:UIBarMetricsDefault]; 

    [self setBackgroundImage:selectedBackgroundImage 
        forState:UIControlStateHighlighted 
        barMetrics:UIBarMetricsDefault]; 

    double dividerImageWidth = [self dividerImageForLeftSegmentState:UIControlStateHighlighted rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault].size.width; 
     [self setContentPositionAdjustment:UIOffsetMake(dividerImageWidth/2, 0) 
          forSegmentType:UISegmentedControlSegmentLeft 
           barMetrics:UIBarMetricsDefault]; 
     [self setContentPositionAdjustment:UIOffsetMake(- dividerImageWidth/2, 0) 
          forSegmentType:UISegmentedControlSegmentRight 
           barMetrics:UIBarMetricsDefault]; 
return self; 
} 
+0

Спасибо. Я надеялся, что смогу сделать это без изображений, только с установкой свойства «border» ... –

Смежные вопросы