2012-10-10 40 views
9

El uso del siguiente código para personalizar UIButtons regulares también afecta a UIBarButtonItems y borra botones en los campos de texto.¿Cómo establecer la apariencia de un UIButton sin afectar a UIBarButtonItems?

[[UIButton appearance] setBackgroundImage:greenButtonImage forState:UIControlStateNormal]; 

hago no desea personalizar los últimos elementos en todo, sólo regulares botones redondos rect. Me doy cuenta de que el uso de appearanceWhenContainedIn: podría utilizarse para establecer una apariencia personalizada para UIBarButtonItems y UITextField, pero deseo que estos botones permanezcan como estándar. La creación de subclases no es una opción aquí, ya que no debería ser necesaria para una tarea tan simple.

Hay una pregunta similar, pero no resuelve el problema. Why does -[[UIButton appearance] setBackgroundImage] affect the initial appearance of UIBarItem objects and how do you correct it?

+1

Pude solucionar el problema de UITextField al configurar específicamente en una imagen de fondo clara. No es una buena solución. –

+0

¿Cómo está inicializando su UIBarButtonItems? ¿Está configurando la propiedad "customView" para que sea un objeto UIButton? Si puede proporcionar un código de muestra para la creación de un UIBarButtonItem, entonces estoy bastante seguro de que puedo ayudar ... Hago muchas personalizaciones con proxies de apariencia y botones de barra/UIButtons en mis aplicaciones y no he tenido estos problemas. – DiscDev

Respuesta

2

Una solución que he usado antes es nula a cabo la propiedad "BackgroundImage" para UIButtons contenida en el interior de un UINavigationBar:

[[UIButton appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:nil forState:UIControlStateNormal]; 

Esto debería permitirle personalizar UIButtons en otros casos, sin tocar el unos dentro de un UIBarButtonItem en UINavigationBar.

Cuestiones relacionadas