iOS 7.1 अद्यतन : UINavigationBar में अल्फा चैनल को संशोधित करने के लिए समाधान की तरह दिखता है इस अद्यतन में नजरअंदाज कर दिया गया है। अभी, सबसे अच्छा समाधान सिर्फ 'इसके साथ सौदा करना' प्रतीत होता है और आशा है कि आप जो भी रंग चुनते हैं वह एक पारभासी प्रभाव प्रदान कर सकते हैं। मैं अभी भी इसके आसपास होने के तरीकों को देख रहा हूं।
iOS 7.0.3 अद्यतन : हमारे द्वारा बनाई गई GitHub लाइब्रेरी को iOS 7.0.3 का उपयोग करते समय इस मुद्दे के आसपास थोड़ा काम करने के लिए अद्यतन किया गया है। दुर्भाग्य से, आईओएस 7.0.2 और इससे पहले और आईओएस 7.0.3 में बनाए गए दोनों रंगों का समर्थन करने के लिए कोई जादू फार्मूला नहीं है। लगता है जैसे Apple ने संतृप्ति में सुधार किया, लेकिन अपारदर्शिता की कीमत पर (चूंकि धुंधला पारभासी अपारदर्शिता स्तर पर निर्भर है)। मैं, कुछ अन्य लोगों के साथ मिलकर इसके लिए एक बेहतर समाधान बनाने पर काम कर रहा हूं।
मुझे यकीन है कि बहुत से लोग पहले से ही समस्या में आ गए हैं जहां iOS 7 एक UINavigationBar के रंग को असंतृप्त करने के लिए जाता है जो पारभासी है।
मेरा लक्ष्य इस रंग के साथ एक UINavigationBar हासिल करना है, लेकिन पारभासी:
हालाँकि, पारभासी के साथ, मुझे यह मिल रहा है। पृष्ठभूमि का दृश्य सफेद है, जिसे मैं समझता हूं कि यह दृश्य थोड़ा हल्का होगा:
क्या पारभासी होते हुए भी मूल रंग प्राप्त करने का कोई तरीका है? मैंने देखा है कि फेसबुक अपने बार, अमीर, नीला रंग पाने में सक्षम है, जैसा कि यहां प्रदर्शित किया गया है:
..तो मुझे पता है कि कोई रास्ता है। पृष्ठभूमि के दृश्य स्पष्ट रूप से यहाँ अंतर करते हैं, लेकिन उनकी अधिकांश सामग्री भी ग्रे / सफेद है। ऐसा लगता है कि आप जो भी बार टिंट रंग डालते हैं, उसकी परवाह किए बिना, आप पारभासी रंग के तहत ज्वलंत रंग प्राप्त करने में असमर्थ हैं।
समाधान के साथ अद्यतन किया गया।
यहाँ समाधान है कि मैं अंत के साथ आ रहा है। मैंने aprato का समाधान लिया और फिर उपवर्ग के UINavigationBar
भीतर रिवाज को शामिल किया 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
UINavigationBar
आईओएस 7 में पारभासी के संपर्क में आने पर जितना संभव हो उतना हल्कापन को ठीक करने के लिए एक समाधान है
UINAvigationBar
अपारदर्शी नहीं है?