6

मैं QlPreviewController नियंत्रक में नेविगेशन पट्टी का रंग बदला जा सकता है?कैसे qlpreviewcontroller में नेविगेशन पट्टी का रंग बदला जा

मैं

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

निम्नलिखित की कोशिश की है, लेकिन यह काम नहीं करता।

धन्यवाद।

+0

करें ताकि जैसे कोड में चिह्नित न करें: \ 'कोड \', बजाय, अपने कोड के सामने चार अंतरिक्ष जोड़ें। इसके अलावा कृपया समझा 'काम नहीं करता है' क्या है। इस तरह के कोड चलाने पर आपके सिस्टम फट करता है? – SteveFest

उत्तर

-1

अनुप्रयोग प्रतिनिधि में नीचे दिए गए कोड का उपयोग करें

[[UINavigationBar उपस्थिति] setBarTintColor: #your रंग #];

+0

* AppDelegate.m –

5

हाँ, वहाँ आईओएस के लिए QLPreviewController पर barTintColor साथ एक बग है अगर आप इसे माध्यम से presentViewController: animated:

यहाँ मेरी समाधान है दिखा रहे हैं, setBackgroundImage का उपयोग करें:

: 1x1 छवि setBarTintColor के बजाय साथ
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[QLPreviewController class]]] 
    setBackgroundImage:[UIImage imageWithColor:[UIColor redColor]] 
forBarMetrics:UIBarMetricsDefault]; 

और imageWithColor: UIImage की मेरी कस्टम श्रेणी में एक विधि है जो आकार बदलने योग्य 1x1 छवि लौटा रही है इच्छित रंग (उदाहरण में लाल रंग से ऊपर) के:

+ (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; 
} 

मैं भी साथ इस रैप करने के लिए सुझाव है कि iOS संस्करण की जांच की तरह:

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

कहाँ SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO से है:

#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

अच्छा सुझाव में, छवि सेट करके मेरे लिए काम किया। – johnrechd

संबंधित मुद्दे