2013-10-16 4 views
9

ऐसा प्रतीत होता है कि विभिन्न आईओएस डिवाइस UINavigationBar एस barStyle = UIBarStyleBlack और translucent = YES के साथ बहुत अलग तरीके से प्रस्तुत करते हैं। पर विचार करें:मैं कैसे पता लगा सकता हूं कि आईओएस डिवाइस धुंध प्रभाव का समर्थन करता है या नहीं?

iPhone 4, कोई रंग: iPhone 4, no tint

iPhone 5, कोई रंग: iPhone 5, no tint

iPhone 4, barTintColor = [UIColor colorWithWhite:0.0f alpha:0.5f]: iPhone 4, tinted

iPhone 5, barTintColor = [UIColor colorWithWhite:0.0f alpha:0.5f]: iPhone 5, tinted

आईफोन 5 वांछित ef पैदा करता है एक टिंट के बिना fect, लेकिन 4 अपारदर्शी है। एक सेमिट्रांस्पेरेंट टिंट जोड़ने से 4 अच्छे लगते हैं, लेकिन 5

आईपैड 2 और 3 के लिए भी सच है, और सैद्धांतिक रूप से कोई भी डिवाइस जो आईओएस 7 धुंध प्रभावों का समर्थन नहीं करता है।

इन पुराने उपकरणों को ब्लैकलिस्ट करने का छोटा, मैं कैसे पता लगा सकता हूं कि कोई डिवाइस धुंधला करने का समर्थन करता है ताकि मैं सशर्त रूप से प्रतिपादन मतभेदों के आसपास काम कर सकूं? या क्या टिंट का उपयोग किए बिना उपस्थिति को सामान्य करने का कोई तरीका है?

+0

बीटा बीज के बाद से डेवलपर्स द्वारा लगातार अनुरोध किए जाने के बावजूद इसके लिए कोई सार्वजनिक एपीआई नहीं है। डिवाइस मॉडल की जांच करना कोई समाधान नहीं है क्योंकि उपयोगकर्ता इसे नए उपकरणों पर बंद कर सकते हैं। –

+0

@ फिलिप रैडेलिक वाह, वास्तव में? मैं एक नए डिवाइस पर प्रभाव कैसे अक्षम कर सकता हूं? –

+3

सेटिंग्स -> सामान्य -> ​​अभिगम्यता -> कंट्रास्ट बढ़ाएं –

उत्तर

0

मुझे लगता है कि यह सवाल आप क्या करना चाहते हैं। बस विभिन्न उपकरणों के लिए सशर्त कोड लिखने के लिए:

Determine device (iPhone, iPod Touch) with iPhone SDK

+0

जैसा कि मैंने सवाल में कहा था, यह एक कामकाज है जो ज्यादातर समय काम करता है, लेकिन यह वास्तविक समाधान नहीं है। –

1

क्या UIAccessibilityReduceTransparencyStatusDidChangeNotification के लिए अवलोकन के साथ इस UIDevice श्रेणी के बारे में?

@interface UIDevice (Additions) 

@property (readonly) NSString *platform; 
@property (readonly) BOOL canBlur; 

@end 


@implementation UIDevice (Additions) 

- (NSString *)platform { 
    int mib[] = { CTL_HW, HW_MACHINE }; 
    size_t len = 0; 
    sysctl(mib, 2, NULL, &len, NULL, 0); 
    char *machine = malloc(len); 
    sysctl(mib, 2, machine, &len, NULL, 0); 
    NSString *platform = [NSString stringWithCString:machine encoding:NSASCIIStringEncoding]; 
    free(machine); 

    return platform; 
} 

- (BOOL)canBlur { 
    if(NSStringFromClass([UIVisualEffectView class]) && UIDevice.currentDevice.systemVersion.floatValue >= 8.0 && !UIAccessibilityIsReduceTransparencyEnabled()) { 
     NSString *platform = self.platform; 
     CGFloat deviceVersion = [[[platform stringByReplacingOccurrencesOfString:@"[^0-9,.]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, platform.length)] stringByReplacingOccurrencesOfString:@"," withString:@"."] floatValue]; 

     if([platform isEqualToString:@"i386"] || [platform isEqualToString:@"x86_64"]) { 
      return YES; 
     } else if([platform rangeOfString:@"iPhone"].location != NSNotFound) { 
      return (deviceVersion >= 4.1); 
     } else if([platform rangeOfString:@"iPod"].location != NSNotFound) { 
      return (deviceVersion >= 5.1); 
     } else if([platform rangeOfString:@"iPad"].location != NSNotFound) { 
      return (deviceVersion >= 3.4); 
     } 
    } 

    return NO; 
} 

अपनी कार्यान्वयन फ़ाइल में शामिल न करें।

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

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