2014-02-06 3 views
2

iOS 6 및 iOS 7 모두에서 작동하고 두 가지 모두에 대해 동일한 평면 디자인을 사용하는 앱에서 작업하고 있습니다.iOS 6 iOS 7 디자인을 사용하는 UISegmentedControl

테두리, 모서리 반경 및 모두를 사용하도록 UISegmentedControl을 사용자 정의하려고하는데 어떻게해야하는지 알 수 없습니다. 나는 지금까지 평평한 배경만을 가지고있다.

누군가 iOS 6 UISegmentedControl을 iOS 7처럼 보이게하는 조언이 있습니까?

편집 :

싶습니다

enter image description here

대신

enter image description here

답변

3

당신은 코드 아래 사용할 수 있습니다 :

// 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)]; 
:

// 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]; 

을하고 모서리가 둥근 최저치를 위해 당신이 코드 아래 사용할 수 있습니다 여기에

UISegmentedControl 당신이 하위 클래스로 할 수있는 방법의 예
+0

이 코드는 테두리 나 반지름을 만들지 않습니다 :/ –

+0

이제 편집을 확인할 수 있습니다 :) – Ashutosh

+0

This doesn iOS 6에서 조정 해본 후에도 작동하지 않습니다. – CVertex

0

당신은 예를 들어 here를 살펴 또는 custom control 변경을 할 수 있습니다합니다 귀하의 필요에 맞는 이미지.

@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"속성을 설정하는 것만으로도 이미지없이이 작업을 수행 할 수 있기를 바랬습니다 ... –