2012-09-04 6 views
8

Un segmento solo puede tener una imagen o un título; no puede tener ambos. No hay una imagen predeterminadaIcono Y texto en UISegmentedController

Así dice Apple en el UISegmentedController Reference.

¿Alguien ha encontrado una solución generalizada que le permita tener un icono y un texto? Tengo un Control segmentado que tiene cuatro segmentos. Hay opciones para personalizar el aspecto del control, pero solo parecen diseñadas para un UISegmentedControl con dos segmentos.

ideas que estoy dando vueltas:

  1. Zanja el control segmentado por cuatro UIButtons y manejar la "seleccionado" estado mismo
  2. tirar mis manos sólo tiene que ir con el texto o iconos.
  3. Sus sugerencias ...?
+0

Se podría construir una imagen que tiene el título texto en él usando photoshop o algún otro software de dibujo. – rdelmar

+0

Tal vez, la forma de UIButtons es la mejor. Debe manejar los botones, pero no es difícil. Solo necesita una instrucción 'for' (en la matriz que cointegra su UIButton) y usa la propiedad' isSelected' de UIButton. – MaTTP

Respuesta

5

Es posible que desee probar una alternativa de terceros, tales como STSegmentedControl (sin relación, pero lo he usado, y suena como que le dará la flexibilidad que necesita sin partir de cero).

+0

Gracias. Resulta que tengo que trabajar más en esto para que funcione exactamente como yo quiero. PERO, como dijiste, no tengo que empezar desde cero. – Benmj

10

Se crea una nueva imagen dibujando su imagen actual en un contexto, dibuja el texto que desea, a continuación, utilizar esa imagen combo de la imagen solo segmento como:

UIGraphicsBeginImageContextWithOptions(size, YES, 0); 
CGContextRef context = UIGraphicsGetCurrentContext(); 

// Text first 
[myString drawAtPoint:somePoint withFont:font]; 

// Images upside down so flip them 
CGAffineTransform flipVertical = CGAffineTransformMake(1, 0, 0, -1, 0, size.height); 
CGContextConcatCTM(context, flipVertical); 
CGContextDrawImage(context, (CGRect){ imagePoint, imageSize }, [myUIimage CGImage]); 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

return image; 
+4

gracias por este fragmento. Lo he convertido en una [categoría UIImage] (https://gist.github.com/3801542), que he encontrado muy útil: [https://gist.github.com/3801542](https:/ /gist.github.com/3801542). Se puede usar así: 'UIImage * image = [UIImage imageFromImage: uiImage] cadena: @" string "color: [UIColor whiteColor]];' – bejonbee

+0

@somethingkindawierd (a) Gracias por compartir su categoría. (b) ¿No podemos soltar ese corchete derecho ']' después de uiImage? De esta manera: [UIImage imageFromImage: cadena uiImage: @ "string" color: [UIColor whiteColor]]; –

+0

@BasilBourque, inténtalo. En este momento no estoy seguro de por qué lo hice ... –

Cuestiones relacionadas