Misma pregunta como este, pero la cuestión fue rechazado (a causa de la CND en el tiempo) y ya no está activa.

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Illegal property type, c for appearance setter, _installAppearanceSwizzlesForSetter:'

Estoy de poner esto en viewDidLoad de mi vista inicial del controlador. setTranslucent sale en autocompletar, y no se quejan hasta estrellarse y hablando de swizzles y las cosas.

Cualquier información sobre este sería genial, yo estoy en un muy mal momento de conseguir un constante estado de la aparición de las barras a través de mi aplicación.

  • Se ejecuta en el simulador de iOS 7 o una versión de iOS 7 el dispositivo? Si no, el setTranslucent de propiedad no existen y por lo tanto causar la caída.
  • Se bloquea en el simulador o dispositivo?
  • Usted dijo que se bloquea a la derecha? No entiendo muy bien tu respuesta.
  • Estuve probando en el simulador, y yo no estaba seguro de que (dispositivo o simulador) que significaba no tener la translúcido de la propiedad. Pero supongo que ahora que quieres decir simulador. Así que ahora debo preguntar – ¿por qué el simulador de la biblioteca no tienen translucent?
  • Caso omiso de mi comentario de antes. Yo era un malentendido. Compruebe mi respuesta.
  • Esto sucede porque «[UITabBar apariencia].translúcido» en iOS7 demasiado.

InformationsquelleAutor user | 2013-10-01

5 Comentarios

  1. 54

    Parece que el translucent de la propiedad no puede ser fijado mediante UIAppearance. No sé exactamente por qué, pero supongo que algunas propiedades no son compatibles. Sin embargo, lo resuelto por la creación de una costumbre UIViewController y hacer todos los otros viewControllers en mi aplicación de una subclase de personalizado viewController. De esa manera, puedo establecer propiedades globales (tales como translucent en su caso) que será heredado por todos los otros viewControllers en mi aplicación. Sé que es una especie de un gran cambio, pero espero que ayude.

    **** EDITAR ****

    Como de iOS 8, la translucidez se puede establecer con UIAppearance:

    Objetivo C

    if([UIDevice currentDevice].systemVersion.floatValue >= 8.0) {
    
        [[UINavigationBar appearance] setTranslucent:YES];
    }
    

    Swift

    if (UIDevice.currentDevice().systemVersion as NSString).floatValue >= 8.0 {
    
        UINavigationBar.appearance().translucent = true
    }
    
    • Terminé la configuración de la translucencia en cada vista controlador manualmente. Más rápido, pero no es tan limpio como subclases o la definición de un protocolo.
    • iOS 8 empezado a apoyar la configuración de la translucencia a través de UIAppearance.
    • Mientras que la explicación tiene sentido, el conformsToProtocol comprobar también pasa para iOS 7. Terminó con una versión del sistema de verificación antes de establecer la translúcido de la propiedad.
    • Como @e_x_p dice, es mejor para comprobar si responden a la selección, así que usted será nula de que las futuras versiones se rompe, y funcionará siempre y cuando esté disponible. si([[UINavigationBar apariencia] respondsToSelector:@selector(setTranslucent:)])
    • ahora reemplace con UINavigationBar.(aspecto).isTranslucent = true
  2. 8

    Se puede engañar a la de ella, aunque especificando no existen imagen, que me la barra de herramientas ir opaco

    [[UIToolbar appearance] setBackgroundColor:[UIColor colorWithRed:219.0/255.0 green:67.0/255.0 blue:67.0/255.0 alpha:1.0]];
    
    [[UIToolbar appearance] setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIBarPositionAny barMetrics:UIBarMetricsDefault];
    
  3. 2

    No sé la respuesta a tu pregunta y yo llegué aquí desde google, pero si se utilizan controladores de navegación, que puede cambiar toda la translucidez con esta línea:

    [self.navController.navigationBar setTranslucent:NO];
    
  4. 2

    de choque porque se utiliza el método ilegal.
    en UIAppearance , dice

    To participate in the appearance proxy API, tag your appearance property selectors in your header with UI_APPEARANCE_SELECTOR.
    

    significa que, cuando se utilice [[XXX appearance] method],el método método debe tener el atributo UI_APPEARANCE_SELECTOR,o se puede lanzar una excepción,y translucent no lo tiene.

    pero lo que me desconcierta es que, [[XXX appearance] method] en iOS8 está bien, pero se bloquea en iOS7 de apple y el documento no lo dice.

  5. 0

    No se puede cambiar translúcido de la propiedad después de la clase de que se haya inicializado.

    [newsViewNavigationController.navigationBar setTranslucent:NO];
    

    Yo hice algo como esto y funcionó!

Dejar respuesta

Please enter your comment!
Please enter your name here