iphone - color - Imagen vs Imagen de fondo para UIButton
swift button action (2)
¿Qué tipo de botón estás usando?
Por el sonido de esto, posiblemente estés usando el estilo UIButtonTypeRoundedRect, pero UIButtonTypeCustom puede ser más adecuado. Puede cambiar esto dentro de la ventana del inspector de Interface Builder.
Tengo una imagen que es 480x331 y tiene un fondo transparente. La parte transparente está justo alrededor de los bordes de la imagen. Mi UIButton es 72x37. Cuando configuro la imagen como imagen de fondo en IB para el botón, los bordes transparentes de la imagen se muestran en blanco en el botón. Sin una imagen, el botón es blanco con esquinas redondeadas. Supongo que es el blanco que veo venir. Si es así, significa que la transparencia de la imagen está funcionando, pero el área blanca del botón se está mostrando.
Si configuro la imagen en la propiedad Imagen de UIButton, no se escala correctamente, incluso después de cambiar el modo de visualización, y permanece en su tamaño completo.
¿Alguna sugerencia sobre qué propiedad debería usar para que la escala y la transparencia funcionen correctamente?
@Christopher Fairbaim tiene razón al sugerir el uso de UIButtonTypeCustom. El uso de UIButtonTypeRoundedRect le dará el fondo blanco en áreas transparentes.
Sin embargo, conectar las cosas en Interface Builder tiene sus limitaciones. Si desea generar dinámicamente UIViews, UIButtons y activos de un conjunto de datos o basados en la entrada del usuario, hacerlo de manera programática es el camino a seguir.
Para crear el botón: (Nota: esto también funcionará con otros UIButtonTypes, pero he usado UIButtonTypeCustom para este ejemplo de transparencia en particular).
UIButton *btnName = [UIButton buttonWithType:UIButtonTypeCustom];
Para cambiar las propiedades deseadas:
btnName.backgroundColor = [UIColor clearColor];
btnName.frame = CGRectMake(100, 100, 72, 37); //(X coord, Y coord, width, height)
[btnName addTarget:myActionClassName action:@selector(myActionName) forControlEvents:UIControlEventTouchUpInside];
Para agregar imágenes para varios estados (supongamos que son transparentes .png):
UIImage *btnNameImageNormal = [UIImage imageNamed:@"btnNameNormal.png"];
[btnName setBackgroundImage:btnMenuImageNormal forState:UIControlStateNormal];
UIImage *btnNameImagePressed = [UIImage imageNamed:@"btnNamePressed.png"];
[btnName setBackgroundImage:btnNameImagePressed forState:UIControlStateHighlighted];
Para agregar el botón a la vista (desde dentro de una clase viewController):
[self addSubview:btnName];
(Perdón por cualquier error tipográfico, ya que copié y pegué uno de mis proyectos e intenté generalizar el nombre).