दिलचस्प पोस्ट
पायथन 3.2 urllib2 आयात करने में असमर्थ (आयातई त्रुटि: urllib2 नामक कोई मॉड्यूल नहीं है) यूनिट एक multithreaded आवेदन का परीक्षण? iphone त्रुटि: '' 'एफयू' से पहले अपेक्षित '=', ',', ';', 'asm' या '__attribute__' बिना वर्जन वस्तु को नष्ट करना मैं पायथन में एक YAML फ़ाइल को कैसे पार्स कर सकता हूं? सभी mysql चयनित पंक्तियों को एक सरणी में प्राप्त करें यूनिकोड और यूटीएफ -8 में क्या अंतर है? कैसे जाँचने के लिए कि एक स्ट्रिंग नियमित अभिव्यक्ति का उपयोग कर एक palindrome है? एन्जोर 2 में एनजी के लिए जेसन ऑब्जेक्ट को पुनरावृत्ति करना क्या मैं JOIN की स्थिति में केस का उपयोग कर सकता हूँ? मापदंडों को सही ढंग से कैसे पार करें? एक UITableView में एकाधिक कॉलम कैसे प्रदर्शित करें? दिनांक को कैसे पार्स करना है? पीपीएपी अभिभावक वर्ग चर का प्रयोग PHP में एमवीसी दृश्य को समझना

एक IOS 7 पारदर्शी UINavigationBar के लिए उज्ज्वल, उज्ज्वल रंग प्राप्त करना


आईओएस 7.1 अद्यतन : यूआईएनएवीगेशनबार में अल्फा चैनल को संशोधित करने के लिए वर्कअराउंड को इस अपडेट में अनदेखा कर दिया गया है। अभी, सबसे अच्छा समाधान सिर्फ 'इसके साथ सौदा' लगता है और आशा करता है कि जो भी रंग आप चुनते हैं वह पारभासी प्रभाव को प्रस्तुत कर सकता है मैं अभी भी इस के आसपास होने के तरीके तलाश रहा हूं।


आईओएस 7.0.3 अपडेटः आईओएस 7.0.3 का उपयोग करते समय हमने जीआईटीएचब लाइब्रेरी बनाई जो इस समस्या को हल करने के लिए अपडेट हो गई है। दुर्भाग्य से, आईओएस 7.0.2 और इससे पहले और आईओएस 7.0.3 में बनाए गए दोनों रंगों का समर्थन करने के लिए कोई जादू सूत्र नहीं है। ऐसा लगता है जैसे ऐप्पल ने संतृप्ति में सुधार किया, लेकिन अस्पष्टता की कीमत पर (क्योंकि धुंधला पारदर्शिता अस्पष्टता स्तर पर निर्भर है)। मैं, कुछ अन्य लोगों के साथ, इसके लिए बेहतर सुधार करने पर काम कर रहा हूं।


मुझे यकीन है कि बहुत से लोग पहले से ही इस समस्या को लेकर आ रहे हैं जहां आईओएस 7 यूआईनेविगेशनबार का रंग पारदर्शी है।

मेरा लक्ष्य इस टिंट रंग के साथ एक UINavigationBar हासिल करना है, लेकिन पारदर्शी:

UINavigationBar, अपारदर्शी

हालांकि, पारस्परिकता के साथ, मुझे यह मिल रहा है। पृष्ठभूमि दृश्य सफेद है, जिसे मैं समझता हूं कि यह दृश्य थोड़ा हल्का बना देगा:

UINavigationBar, पारभासी

क्या अभी भी translucency होने के मूल रंग को प्राप्त करने का कोई तरीका है? मैंने देखा है कि फेसबुक यहां दिखाई दे रहा है, जैसा कि उनकी पट्टी उनके समृद्ध, नीले रंग के होने में सक्षम है:

फेसबुक यूनाविगेशनबार, पारभासी

..इसलिए मुझे पता है कि कोई रास्ता होना चाहिए। पृष्ठभूमि के विचारों में स्पष्ट रूप से एक अंतर है, लेकिन उनकी अधिकांश सामग्री ग्रे / सफ़ेद भी है ऐसा लगता है कि आप जो भी रंग के रंग के रंगों में डालते हैं, आप पारदर्शीता के तहत विशद रंग पाने में असमर्थ हैं।

समाधान के साथ अपडेट किया गया

यहाँ समाधान है कि मैं समाप्त होने के साथ समाप्त हो रहा है। मैंने एटेटो का समाधान लिया और फिर यूआईएनएवीसी UINavigationController उप-क्लास के भीतर कस्टम यूआईएनएविगेशनबार को शामिल किया। मैंने एक ऐसे रिपॉजिटरी का निर्माण किया है, जिसमें एक उदाहरण एप के साथ नीचे सूचीबद्ध कार्यान्वयन किया गया है ।

 //////////////////////////// // CRNavigationBar.m //////////////////////////// #import "CRNavigationBar.h" @interface CRNavigationBar () @property (nonatomic, strong) CALayer *colorLayer; @end @implementation CRNavigationBar static CGFloat const kDefaultColorLayerOpacity = 0.5f; static CGFloat const kSpaceToCoverStatusBars = 20.0f; - (void)setBarTintColor:(UIColor *)barTintColor { [super setBarTintColor:barTintColor]; if (self.colorLayer == nil) { self.colorLayer = [CALayer layer]; self.colorLayer.opacity = kDefaultColorLayerOpacity; [self.layer addSublayer:self.colorLayer]; } self.colorLayer.backgroundColor = barTintColor.CGColor; } - (void)layoutSubviews { [super layoutSubviews]; if (self.colorLayer != nil) { self.colorLayer.frame = CGRectMake(0, 0 - kSpaceToCoverStatusBars, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + kSpaceToCoverStatusBars); [self.layer insertSublayer:self.colorLayer atIndex:1]; } } @end 

 //////////////////////////// // CRNavigationController.m //////////////////////////// #import "CRNavigationController.h" #import "CRNavigationBar.h" @interface CRNavigationController () @end @implementation CRNavigationController - (id)init { self = [super initWithNavigationBarClass:[CRNavigationBar class] toolbarClass:nil]; if(self) { // Custom initialization here, if needed. } return self; } - (id)initWithRootViewController:(UIViewController *)rootViewController { self = [super initWithNavigationBarClass:[CRNavigationBar class] toolbarClass:nil]; if(self) { self.viewControllers = @[rootViewController]; } return self; } @end 

वेब के समाधान से एकत्रित समाधान "एक IOS 7 पारदर्शी UINavigationBar के लिए उज्ज्वल, उज्ज्वल रंग प्राप्त करना"

आईओएस 7.0.3 अद्यतन: जैसा कि आप ऊपर देख रहे हैं 7.0.3 बदल चीजें मैंने अपना सारांश अद्यतन किया है उम्मीद है कि यह सिर्फ लोगों के उन्नयन के रूप में दूर होगा

मूल उत्तर: अन्य दो उत्तरों के संयोजन में मुझे एक हैक के साथ समाप्त हुआ। मैं UINavigationBar subclassing हूँ और कुछ अतिरिक्त स्थान के साथ वापस एक परत जोड़ने के लिए अगर किसी भी विभिन्न ऊँचाई स्थिति सलाखों के ऊपर हैं लेयर सबव्यूज़ और रंग परिवर्तन में परत को समायोजित किया जाता है जब भी आप बारटिंटरॉल सेट करते हैं

सार: https://gist.github.com/aprato/6631390

setBarTintColor

  [super setBarTintColor:barTintColor]; if (self.extraColorLayer == nil) { self.extraColorLayer = [CALayer layer]; self.extraColorLayer.opacity = self.extraColorLayerOpacity; [self.layer addSublayer:self.extraColorLayer]; } self.extraColorLayer.backgroundColor = barTintColor.CGColor; 

layoutSubviews

  [super layoutSubviews]; if (self.extraColorLayer != nil) { [self.extraColorLayer removeFromSuperlayer]; self.extraColorLayer.opacity = self.extraColorLayerOpacity; [self.layer insertSublayer:self.extraColorLayer atIndex:1]; CGFloat spaceAboveBar = self.frame.origin.y; self.extraColorLayer.frame = CGRectMake(0, 0 - spaceAboveBar, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + spaceAboveBar); } 

बार के लिए टिंट का रंग आईओएस 7.0 पर बदल गया है। यह अब बार की पृष्ठभूमि को प्रभावित नहीं करता है और जैसा कि टिंटकॉलर प्रॉपर्टी के लिए वर्णित है जैसा UIView में जोड़ा गया है। बार की पृष्ठभूमि को टिंट करने के लिए, कृपया- barTintColor का उपयोग करें। आप आईओएस 6 और आईओएस 7 दोनों के साथ ऐप का काम करने के लिए निम्नलिखित कोड का उपयोग कर सकते हैं।

 if(IS_IOS7) { self.navigationController.navigationBar.barTintColor = [UIColor blackColor]; self.navigationController.navigationBar.translucent = NO; } else { self.navigationController.navigationBar.tintColor = [UIColor blackColor]; } 

IS_IOS7 एक मैक्रो है जिसे पीच फाइल में परिभाषित किया गया है।

 #define IS_IOS7 ([[UIDevice currentDevice].systemVersion floatValue] >= 7.0) 

मैं इस समाधान के साथ नहीं आया था, लेकिन यह काफी अच्छी तरह से काम करने लगता है। मैंने इसे यूआईनेविगेशन नियंत्रक के मेरे उपवर्ग पर डीडलोड को देखने के लिए जोड़ा।

स्रोत: https://gist.github.com/alanzeino/6619253

 // cheers to @stroughtonsmith for helping out with this one UIColor *barColour = [UIColor colorWithRed:0.13f green:0.14f blue:0.15f alpha:1.00f]; UIView *colourView = [[UIView alloc] initWithFrame:CGRectMake(0.f, -20.f, 320.f, 64.f)]; colourView.opaque = NO; colourView.alpha = .7f; colourView.backgroundColor = barColour; self.navigationBar.barTintColor = barColour; [self.navigationBar.layer insertSublayer:colourView.layer atIndex:1]; 

एक कम-फाई का रास्ता शायद एक UIView लगाया जा रहा है जो बार के पीछे के दृश्य के शीर्ष पर नेविगेशन बार की ऊंचाई है इसे नेविगेशन बार के रूप में एक ही रंग देखें, लेकिन जब तक आप वांछित प्रभाव प्राप्त न करें, अल्फा के साथ खेलें:

 UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.navigationController.navigationBar.frame), 64)]; backgroundView.backgroundColor = [UIColor colorWithRed:0.0 green:0.0 blue:1 alpha:.5]; [self.navigationController.view insertSubview:backgroundView belowSubview:self.navigationController.navigationBar]; 

पीछे UIView

यहां छवि विवरण दर्ज करें

(कम उदाहरणों से जोर पारदर्शिता के लिए बदल दिया गया रंग) आंदोलन में पारदर्शिता / धुंधला अधिक ध्यान देने योग्य है।)

UINavigationBar subclassing और पृष्ठभूमि के ऊपर है कि एक ही दृश्य रखने पर बाकी सब कुछ के पीछे शायद ही परिणाम प्राप्त होगा, जबकि कम hacky


मैंने देखा है कि एक और समाधान के आसपास फेंका गया है UINavigationBar के अल्फा के साथ खेल रहा है:

 self.navigationController.navigationBar.alpha = 0.5f; 

संपादित करें: असल में, परीक्षण करने के बाद ऐसा लगता है कि यह इरादा व्यवहार (या कोई व्यवहार) प्रदान नहीं करता है:

.8 अल्फा

.8 अल्फा के साथ नेविगेशन बार

बिना समायोजित अल्फा

यहां छवि विवरण दर्ज करें

जाहिर है, आप केवल आईओएस 7 उपकरणों पर ऐसा करना चाहते हैं। इसलिए, इनमें से किसी भी को लागू करने से पहले कुछ संस्करण चेक जोड़ें ।

आरजीबी फॉर्मेट में अपना UIColor ऑब्जेक्ट बनाने के बजाय, एचएसबी का उपयोग करें और संतृप्ति पैरामीटर बढ़ाएं। ( सैम Soffes के लिए क्रेडिट जो इस पद्धति का वर्णन करता है यहाँ )

 navigationBar.barTintColor = [UIColor colorWithHue:0.555f saturation:1.f brightness:0.855f alpha:1.f]; 

नोट: यह समाधान एक ट्रेडऑफ है और उच्च संतृप्ति के साथ रंगों के लिए अच्छा काम नहीं करता है।

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

आप मौजूदा रंगों को संशोधित करने के लिए डेविड किगन से यूआईकलोल श्रेणी ( गीथहब लिंक ) का भी प्रयास कर सकते हैं।

समस्या अब नई 7.0.3 रिहाई में एप्पल द्वारा तय की गई है।

मैं @ एपेटा के समाधान का इस्तेमाल किया, लेकिन कुछ कोने के मामलों में जहां नए वीसीएस (जैसे UINavigationItemButtonViews , UINavigationItemViews , आदि) से नई परतें स्वतः अतिरिक्त कॉलरलेयर के नीचे की स्थिति में डाली जाएंगी (जो उन शीर्षक या बटन तत्वों से प्रभावित होने का कारण होगा अतिरिक्त extraColorLayer और इस प्रकार रंग में बेहोश होकर वे सामान्य रूप से होंगे)। इसलिए मैंने अतिरिक्त कॉलर को इंडेक्स स्थिति में रहने के लिए मजबूर करने के लिए @ एप्रेटो के समाधान को समायोजित किया। सूचकांक स्थिति 1 पर, अतिरिक्त _UINavigationBarBackground ऊपर रहता है, लेकिन बाकी सब कुछ के नीचे

यहां मेरा वर्ग कार्यान्वयन है:

 - (void)setBarTintColor:(UIColor *)barTintColor { [super setBarTintColor:barTintColor]; if (self.extraColorLayer == nil) { self.extraColorLayer = [CALayer layer]; self.extraColorLayer.opacity = kDefaultColorLayerOpacity; [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear } self.extraColorLayer.backgroundColor = barTintColor.CGColor; } - (void)layoutSubviews { [super layoutSubviews]; if (self.extraColorLayer != nil) { self.extraColorLayer.frame = CGRectMake(0, 0 - kSpaceToCoverStatusBars, CGRectGetWidth(self.bounds), CGRectGetHeight(self.bounds) + kSpaceToCoverStatusBars); } } - (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview { [super insertSubview:view aboveSubview:siblingSubview]; [self.extraColorLayer removeFromSuperlayer]; [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear } - (void)insertSubview:(UIView *)view atIndex:(NSInteger)index { [super insertSubview:view atIndex:index]; [self.extraColorLayer removeFromSuperlayer]; [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear } - (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview { [super insertSubview:view belowSubview:siblingSubview]; [self.extraColorLayer removeFromSuperlayer]; [self.layer insertSublayer:self.extraColorLayer atIndex:1]; // This way the text comes out clear } 

मैंने अपने कोड में अपने कोड को बेहतर किया है: https://github.com/allenhsu/CRNavigationController

मेरे संशोधन के साथ, स्क्रीन पर परिणाम का रंग (सफेद पृष्ठभूमि पर उठाया गया) बिल्कुल वही मान setBarTintColor में पास होगा setBarTintColor मुझे लगता है कि यह एक अद्भुत समाधान है

इनमें से कोई भी हैक्स आवश्यक नहीं है :)। बस सेट करें:

 self.navigationController.navigationBar.translucent = NO; 

आईओएस 7 के लिए, डिफ़ॉल्ट पारगमन को सच में रखा गया है।


संबंधित नोट पर, आप अपने शीर्षक पाठ का रंग (छाया के साथ) आसानी से सेट कर सकते हैं:

 NSShadow *titleShadow = [[NSShadow alloc] init]; titleShadow.shadowOffset = CGSizeMake(0.0f, -1.0f); titleShadow.shadowColor = [UIColor blackColor]; NSDictionary *navbarTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor], NSShadowAttributeName: titleShadow}; [[UINavigationBar appearance] setTitleTextAttributes:navbarTitleTextAttributes]; 

आईओएस 7 पर अक्षम पारदर्शिता के साथ एक समान रंगीन नेविगेशन बार सेटअप करने की कोशिश करते समय मुझे इस प्रश्न / ए के पार आया।

बार टिंटकार के साथ थोड़ी देर के प्रयोग के बाद मैंने सोचा कि अपारदर्शी नेविगेशन बार होने का एक बहुत ही आसान तरीका वांछित रंग की एक पिक्सेल छवि बनाना है, इसे बाहर खींचने योग्य छवि बनाएं और इसे पृष्ठभूमि में सेट करें नेविगेशन पट्टी के चित्र ।

 UIImage *singlePixelImage = [UIImage imageNamed:@"singlePixel.png"]; UIImage *resizableImage = [singlePixelImage resizableImageWithCapInsets:UIEdgeInsetsZero]; [navigationBar setBackgroundImage:resizableImage forBarMetrics:UIBarMetricsDefault]; 

कोड की तीन पंक्तियां, बहुत आसान है और आईओएस 6 और आईओएस 7 पर दोनों काम करता है (बारटिंटकॉल आईओएस 6 पर असमर्थित है)

GitHub पर उपलब्ध साइमन बूथ से उपलब्ध एक महान Dropin UINavigationController प्रतिस्थापन यहाँ GitHub – C360NavigationBar

यदि आप पीछे iOS6 समर्थन कर रहे हैं तो रूट व्यू नियंत्रक पर एक जांच करें जैसे:

PatientListTableViewController * frontViewController = [[PatientListTableViewController alloc] init];

  UINavigationController *navViewController = [[UINavigationController alloc] initWithNavigationBarClass:[C360NavigationBar class] toolbarClass:nil]; if ([navViewController.view respondsToSelector:@selector(setTintColor:)]) { //iOS7 [navViewController.view setTintColor:self.navBarTintColor]; [[C360NavigationBar appearance] setItemTintColor:self.navBarItemTintColor]; } else { //iOS6 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO]; navViewController.navigationBar.tintColor = self.navBarTintColor; } [navViewController pushViewController:frontViewController animated:NO]; self.window.rootViewController = navViewController; 

जैसा कि @ बर्नहार्ड ऊपर उल्लिखित है, वांछित नेविगेशन बार उपस्थिति पाने के लिए बार टिंट रंग को पूरा करना संभव है।

मैंने उस प्रकार के समायोजन के लिए एक बारटिंट कोलेटरऑप्टिमजर उपयोगिता लिखा था यह बार के वास्तविक रंग को आईओएस 7.x और बाद में वांछित रंग से मेल करने के लिए पारभासी बार टिंट रंग को अनुकूलित करता है। विवरण के लिए इस उत्तर को देखें

सच कहूँ तो, उत्तर के ऊपर सही हो सकता है, लेकिन निम्नलिखित चाल मेरे लिए बहुत आसानी से काम करती है

 // this is complete 100% transparent image self.imageBlack = [[UIImage imageNamed:@"0102_BlackNavBG"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 2, 0, 2) resizingMode:UIImageResizingModeStretch]; // this is non-transparent but iOS7 // will by default make it transparent (if translucent is set to YES) self.imageRed = [[UIImage imageNamed:@"0102_RedNavBG"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 2, 0, 2) resizingMode:UIImageResizingModeStretch]; // some navigation controller [nvCtrLeft.navigationBar setBackgroundImage:self.imageRed forBarMetrics:UIBarMetricsDefault]; // some another navigation controller [nvCtrCenter.navigationBar setBackgroundImage:self.imageRed forBarMetrics:UIBarMetricsDefault]; 

यहाँ स्वयं के लिए उपयोग की गई छवियां हैं। self.imageRed और self.imageBlack

< self.imageBlack > इस ब्रैकेट में काली छवि दिखाई नहीं देगी क्योंकि यह पारदर्शी है I

< self.imageRed > लाल छवि इस ब्रैकेट में है।

यूआईनेविगेशनबार के उप-क्लासेसिंग के बिना @प्रेटो समाधान का उपयोग करने का एक तरीका है

मेरे प्रोजेक्ट में मेरा मुख्य दृश्य एक UIViewController है I

समस्या यह है कि नेविगेशन नियंत्रक एक रीडोनली प्रॉपर्टी है, वहाँ मेरे प्रोजेक्ट के साथ आप का उपयोग करने का एक तरीका है क्योंकि मैं इसका उपयोग नहीं कर सकता: [[UINavigationController alloc] initWithNavigationBarClass:

धन्यवाद

आप चाहते हैं कि रंग पाने का एक आसान तरीका उपयोग कर रहा है

  [<NAVIGATION_BAR> setBackgroundImage:<UIIMAGE> forBarPosition:<UIBARPOSITION> barMetrics:<UIBARMETRICS>]; 

जब तक आपकी छवि में कुछ अल्फा है, तब तक पारभासी काम करेगा और आप छवि को बदलकर अल्फा सेट कर सकते हैं। यह सिर्फ iOS7 में जोड़ा गया था छवि के लिए चौड़ाई और ऊंचाई 640x88px ऊर्ध्वाधर (यदि आप इसे स्टेटस बार के नीचे रखना चाहते हैं तो 20 से 88 जोड़ें)।