ios design ios6 ios7 uisegmentedcontrol

iOS 6 UISegmentedControl con el diseño de iOS 7



design ios6 (3)

Finalmente he usado este submódulo. Hace el trabajo:

https://github.com/pepibumur/PPiFlatSegmentedControl

Estoy trabajando en una aplicación que se supone que funciona tanto en iOS 6 como en iOS 7, y tiene el mismo diseño plano para ambos.

Estoy tratando de personalizar mi UISegmentedControl para tener bordes, radio de esquina y todo, pero no puedo encontrar la manera de hacerlo. Solo he tenido un fondo plano hasta ahora.

¿Alguien tiene algún consejo para tener un iOS 6 UISegmentedControl como un iOS 7?

EDITAR:

me gustaría tener

en lugar de


Puede ver un ejemplo aquí o tomar un control personalizado y cambiar sus imágenes para satisfacer sus necesidades.

Aquí hay un ejemplo de cómo puede subclase 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; }


Puedes usar el siguiente código:

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

Y para setear esquinas redondeadas puedes usar el siguiente código:

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