2011-12-01 14 views
12

El siguiente código azulejos del área de imagen dentro de las inserciones se especifica:¿Cómo hacer [UIImage resizableImageWithCapInsets:] antes de iOS5?

UIEdgeInsets imgInsets = UIEdgeInsetsMake(10.f, 5.f, 13.f, 44.f); 
UIImage *image = [[UIImage imageNamed:@"fileName"] resizableImageWithCapInsets:imgInsets]; 

Sin embargo, esto sólo está disponible en iOS5. ¿Cómo puedo lograr el mismo resultado para la compatibilidad con iOS5 anterior?

[UIImage stretchableImageWithLeftCapWidth: topCapHeight:] no es apropiado por lo que yo entiendo, porque asume que el área de mosaico es 1px de ancho. En otras palabras, no es de baldosas, se estira. Por lo tanto, no funciona con patrones, solo con imágenes de un solo color. Esto se demuestra en la captura de pantalla a continuación.

Luego está [UIColor colorWithPatternImage:], pero esto supone que toda la imagen debe ser mosaico, no permite que las inserciones queden tapadas.

Cualquier ayuda apreciada, gracias.

.

enter image description here

+0

Tengo exactamente el mismo problema. Por un lado, hurra que lo arreglaron en iOS 5. Por otro lado, estoy luchando por encontrar una forma sencilla de agregar esta funcionalidad para que funcione en iOS 4. ¿Qué decidiste hacer? –

+0

¿Era posible que antes de esta función los diseñadores gráficos estuvieran muy ocupados construyendo botones? – Ellis

Respuesta

2

He estado buscando una solución a este también. En este punto, creo que usaré respondsToSelector:@selector(resizableImageWithCapInsets:) en el UIImage original para ver si el método está disponible. De lo contrario, utiliza una imagen estirable.

Todavía estoy buscando una solución mejor, y si aparece una, actualizaré la respuesta.