2012-01-09 22 views
22

Estoy buscando una solución a este problema que NO requiere el uso de imágenes/PNG. Estoy buscando una manera de eliminar el fondo de color azul UIButton cuando está en estado seleccionado, y simplemente no puedo encontrar una manera de hacerlo sin usar imágenes. Básicamente, estoy tratando de hacer algo así en el caso de un UITableViewCell: UsoCómo quitar UIButton color de fondo seleccionado?

cell.selectionStyle = UITableViewCellSelectionStyleNone; 

Respuesta

13

Desafortunadamente estoy lejos de mi máquina de prueba en este momento, pero hay dos cosas que podrías intentar

En primer lugar sería establecer la siguiente propiedad:

button.adjustsImageWhenHighlighted = NO; 

o desactive "Lo mejor ajusta la imagen" en el Interface Builder.

Si eso no funciona como se espera que, se puede anular la selección del botón de la acción que ató a, así:

- (IBAction)yourButtonAction:(id)sender { 
    [sender setHighlighted:NO]; 
} 
+0

lo hace pero no de una manera limpia: cuando hago clic, aún se ve el color azul por un breve momento. Espero encontrar una solución que lo elimine por completo. – TommyG

+0

Entonces, ¿por qué no creas tu propio 'UIControl'? No es tan dificil. Entonces puedes personalizarlo al contenido de tu corazón. –

+0

Todavía funciona genial, ios: 9.3, solo 'button.adjustsImageWhenHighlighted = NO' es suficiente. –

-2

...

[myButton setAdjustsImageWhenHighlighted:FALSE]; 
+0

doesnt work .... – TommyG

-2

No estoy seguro si esta es la mejor manera. Pero podría tener un botón invisible o ver la parte superior del botón real y luego reconocer cuándo se hizo clic en el botón/vista superior.

8

Cambiar el alfa de la tintColor a cero, funciona si iOS es 5.0 o posterior

UIColor *color = [[UIColor alloc] initWithRed:0.0 green:0.0 blue:0.0 alpha:0.0]; 
button.tintColor = color; 
+3

Esto hace que parpadee el texto del botón – Nektarios

+0

Aumenta el uso de la CPU para combinar – Zorayr

+0

o simplemente 'button.tintColor = [UIColor clearColor];' –

93

tuve este mismo tema y yo resolverlo cambiando el tipo UIButton desde el "Sistema" en "Usuario". El color de fondo azul no aparece en el estado seleccionado cuando es un tipo "Personalizado".

+5

Simple, pero elimina el agradable fundido al tacto. :( –

+5

Esta debería ser la respuesta aceptada. – Olie

+1

@KyleClegg simplemente cambie el color resaltado y debería desvanecerse a ese color al tacto. – xissburg

0

Swift Versión

extension UIButton { 
    override public var highlighted: Bool { 
     didSet { 
      // clear background color when selected 
      self.layer.backgroundColor = .None 
     } 
    } 
} 
0

Lo que hizo por mí estaba cambiando la button.tintColor en el estado resaltado.Esta es rápida 3, el IOS 10

override public var isHighlighted: Bool { 
    didSet { 
     self.tintColor = UIColor(red: 255/255, green: 255/255, blue: 255/255, alpha: 1.0) 
    } 
} 

O usted puede hacer lo mismo en el constructor de interfaces

Choose button state

Choose button tint color

1

UIButton también con custom tipo, podemos ponerlo en xcode as-

enter image description here

O Por programación AS

let customButton = UIButton(type: .custom) 
    customButton.setTitle("this is Button", for: .normal) 
    customButton.setTitleColor(UIColor.blue, for: .normal) 
    customButton.frame = CGRect(x: 15, y: 50, width: 300, height: 500) 
      self.view.addSubview(customButton) 

Ahora no es azul color de fondo no más de UIButton

0

muy simple en "inspector de atributo" del UIButton vaya a " vea la sección "y justo debajo del aspecto de" Fondo "para " Matiz " y configúrelo en " color claro " o cualquier color específico si quieres ese color. Snapshot of settings

Cuestiones relacionadas