6

Puis-je personnaliser la couleur de la barre de navigation dans le contrôleur QlPreviewController?Comment personnaliser la couleur de la barre de navigation dans qlpreviewcontroller

J'ai essayé suivant

[[UINavigationBar appearanceWhenContainedIn: [QLPreviewController class], nil] setBarTintColor: [UIColor redColor]]; 

mais il ne fonctionne pas.

Merci.

+0

Veuillez ne pas marquer le code comme ceci: \ "code \', ajoutez plutôt quatre espaces devant votre code. Veuillez également expliquer ce qui ne fonctionne pas. Est-ce que votre système explose en exécutant un tel code? – SteveFest

Répondre

-1

S'il vous plaît utiliser le code ci-dessous déléguer App

[[UINavigationBar apparence] setBarTintColor: #Votre couleur #];

+0

* dans AppDelegate.m –

5

Ouais, il y a un bug avec barTintColor sur QLPreviewController pour iOS si vous le montrer par presentViewController: animated:

Voici ma solution, utilisez setBackgroundImage: avec l'image 1x1 au lieu de setBarTintColor:

Et imageWithColor: est une méthode dans ma catégorie personnalisée de UIImage qui renvoie l'image 1x1 redimensionnable de la couleur désirée (couleur rouge dans l'exemple ci-dessus):

+ (UIImage *)imageWithColor:(UIColor *)color { 
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); 
    const CGFloat alpha = CGColorGetAlpha(color.CGColor); 
    const BOOL opaque = alpha == 1; 
    UIGraphicsBeginImageContextWithOptions(rect.size, opaque, 0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 

    CGContextSetFillColorWithColor(context, [color CGColor]); 
    CGContextFillRect(context, rect); 

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return image; 
} 

Je suggère également d'envelopper ce avec iOS contrôle de version comme:

if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"11.0")) { 
[[UINavigationBar appearance... 
setBackgroundImage:[UIImage imageWithColor:...] 
    forBarMetrics:UIBarMetricsDefault]; 
    } 

SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO est de:

#define SYSTEM_VERSION_EQUAL_TO(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) 
#define SYSTEM_VERSION_GREATER_THAN(v)    ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) 
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) 
#define SYSTEM_VERSION_LESS_THAN(v)     ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) 
#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) 
+0

Belle suggestion, travaillé pour moi en définissant l'image. – johnrechd