¿Cómo cambiar el color del borde UISegmentedControl en iOS7?

¿Cómo cambio el color del borde del controller segmentado en iOS7 sin cambiar el color del text?

Sería ideal si pudiera mantener la línea entre los segmentos como está (es decir, el mismo color que el text), pero si un cambio de color del borde implica un cambio de esta línea, también estaría bien.

Tenga en count también que el text (y las líneas entre los segmentos) tienen el color que se establece con
[segmCtrl setTintColor:choosenTintColor]

La respuesta vinculada sí responde a su pregunta, pero debe leer entre líneas. Aquí hay un ejemplo más claro para cambiar todos los styles de control segmentados dentro de la aplicación:

 // Sets the tint color which typically sets the color of the segment images, text, dividers, // borders, and selected segment. A translucent version of this color is also used to tint a // segment when it is pressed and transitioning to being selected, as shown on the first // segment below. [[UISegmentedControl appearance] setTintColor:[UIColor blackColor]]; // The attributes dictionary can specify the font, text color, text shadow color, and text // shadow offset for the title in the text attributes dictionary [[UISegmentedControl appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor networkingColor]} forState:UIControlStateNormal]; 

Para un control dentro de la aplicación:

 // Sets the tint color which typically sets the color of the segment images, text, dividers, // borders, and selected segment. A translucent version of this color is also used to tint a // segment when it is pressed and transitioning to being selected, as shown on the first // segment below. self.segControl.tintColor = [UIColor blackColor]; // The attributes dictionary can specify the font, text color, text shadow color, and text // shadow offset for the title in the text attributes dictionary [self.segControl setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor networkingColor]} forState:UIControlStateNormal]; 

Más información aquí: https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/UIKitUICatalog/UISegmentedControl.html

Entonces resolví el problema yo mismo. Mi solución otorga al borde del control segmentado otro color, nada más.

Para cambiar solo el color del borde del control segmentado, puse otro control segmentado sobre mi anterior. Deshabilité la interacción del usuario con esta nueva, y configuré la image para el segmento seleccionado en nil .

 UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 40)]; // Header view for my main view UISegmentedControl *subCat = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Segm 1", @"Segm 2", @"Segm 3", @"Segm 4", nil]]; // The UISegmentedController which I want to change color for [subCat setFrame:CGRectMake(5, 5, [UIScreen mainScreen].bounds.size.width - 10, 30)]; [subCat setSelectedSegmentIndex:0]; UISegmentedControl *bcg = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@" ", @" ", @" ", @" ", nil]]; // The UISegmentedController I put on top of the other one UIColor *subColor = [UIColor networkingColor]; [subCat setTintColor:subColor]; [bcg setFrame:CGRectMake(5, 5, [UIScreen mainScreen].bounds.size.width - 10, 30)]; [bcg setTintColor:[UIColor greenColor]]; [bcg setUserInteractionEnabled:NO]; [bcg setSelectedSegmentIndex:0]; [bcg setImage:nil forSegmentAtIndex:0]; // Removing highlight color [header addSubview:subCat]; [header addSubview:bcg]; [[self view] addSubview:header]; 

Resuelvo poner en viewWillAppear mySegmentControl.selectedIndex para todos los elementos. Entonces, el color del tinte aparece para todos los segmentos. Por supuesto, después de seleccionar Todos los elementos, vuelva a seleccionar su elemento pnetworkingeterminado.