Al usar resizeImageWithCapInsets: para crear una imagen para un UIButton solo el estado normal (el estado establece la imagen usando setBackgroundImage: forState:) trabajos. Todos los demás estados muestran una brecha en lugar de la imagen dibujada. UIButton dice que si no se establece una imagen para un estado particular, la imagen de estado normal se usará con una superposición para los estados deshabilitados y seleccionados.Uso de resizeImageWithCapInsets: la imagen para el botón solo funciona para el estado establecido, otros estados muestran un "espacio"
Aquí es el estado normal:
Aquí es el estado seleccionado:
y aquí está la imagen de la fuente:
Está claramente usando la imagen de tamaño variable que proporcioné, pero la imagen no dibuja el área redimensionada. (Puede ver los bordes izquierdo y derecho, pero el área central que se va a estirar simplemente no está dibujada).
Curiosamente, stretchableImageWithLeftCapWidth: topCapHeight: funciona. Ahora bien, este es un método en desuso en iOS 5, pero con la brecha que se muestra en la nueva API, es posible que no pueda usarlo.
Reconozco que puedo proporcionar más imágenes para cada estado, pero eso frustra el propósito que estoy tratando de lograr de reducir la huella de memoria y agrega una dependencia adicional en mi diseñador gráfico que me gustaría evitar.
// This is the gist of the code being used
UIImage* image = [UIImage imageNamed:@"button.png"];
UIEdgeInsets insets = UIEdgeInsetsMake(image.size.height/2, image.size.width/2, image.size.height/2, image.size.width/2);
image = [image resizableImageWithCapInsets:insets];
[self.button setBackgroundImage:image forState:UIControlStateNormal];
// Even doing the following results in the same behaviour
[self.button setBackgroundImage:image forState:UIControlStateSelected];
Agregué el fragmento de código y organicé las capturas de pantalla (recortadas en el área pertinente, por supuesto) – NSProgrammer
Esto es raro ... Me gustaría para ver button.png si pudiéramos. –
http://i40.tinypic.com/ea35zq.png - Solo puedo agregar 2 enlaces a una publicación como nuevo usuario, pero aquí está el botón sourece.png – NSProgrammer