2011-08-24 9 views
8

Estoy usando la forma estándar de hacer sombras desde un botón mediante programación, pero me gustaría sombrear para no existir después de que haya terminado con el botón. Podría establecer la opacidad en 0, pero ¿seguiría existiendo la sombra y, de ser así, seguiría gravando el sistema? gracias¿Cómo puedo eliminar una sombra en iPhone

esto da un error

tempButton.superview.layer.shadowOffset = nil; 
    tempButton.superview.layer.shadowRadius = nil; 
    tempButton.superview.layer.shadowOpacity = nil; 
+0

posible duplicado de [iOS agregar/eliminar sombra de una vista] (http://stackoverflow.com/questions/16751163/ios-add-remove-shadow-from-a-view) – Fattie

Respuesta

26

suelo hacer lo siguiente para estar seguro.

[[tempButton layer] setShadowOpacity:0.0]; 
    [[tempButton layer] setShadowRadius:0.0]; 
    [[tempButton layer] setShadowColor:nil]; 

Quartz está altamente optimizado y no perderá ningún tiempo de renderizado si no es necesario.

+0

+1 pero me pregunto si '[[tempButton layer] setShadowColor: nil];' es realmente seguro. La documentación dice que el valor predeterminado es negro opaco, pero no especifica cómo se maneja nil (y confiar en el comportamiento no documentado nunca es seguro). Personalmente voy a omitir ese. – Clafou

+0

'nil' parece funcionar bien, pero si quiere ir a lo seguro, vaya con [UIColor clearColor] .CGColor. Eso funciona bien también y es seguro. – Joel

1

me acaba de quitar el botón, y reemplazarlo con un botón de idéntica (pero no sombreada). O mantén ambos alrededor y esconde/muestra uno de ellos. A veces es más fácil crear un nuevo objeto UI que utilizar uno existente.

Cuestiones relacionadas