İOS 7 şeffaf bir UİNavigationBar için parlak, canlı renkler elde
iOS 7.1 GÜNCELLEMESİ: UİNavigationBar alfa kanalı değiştirmek için çözüm gibi görünüyor bu güncelleme yok. Şu anda en iyi çözüm sadece 'o' ve seçtiğiniz ne olursa olsun umut saydam bir etkisi hale getirebilir. anlaşma gibi görünüyor Hala bu etrafında almanın yollarını arıyorum.
iOS 7.0.3 GÜNCELLEME: GitHub library we created biraz iOS 7.0.3 kullanırken bu soruna geçici bir çözüm bulmak için güncellendi. Ne yazık ki, her iki renk iOS 7.0.2 ve daha önceki iOS 7.0.3 oluşturulan destek için sihirli bir formül yok. Apple geliştirilmiş gibi görünüyor doygunluğu, ama opaklık pahasına saydamlık opaklık düzeyini bağlıdır bulanık beri). Ben, birkaç diğerleri ile birlikte, bu çok daha iyi bir düzeltme oluşturma üzerinde çalışıyoruz.
Birçok kişi zaten iOS 7 şeffaf bir UİNavigationBar renk doygunluğu azalt eğilimindedir nerede sorun rastlamak eminim.
Amacım bu renk renk, ama şeffaf bir UİNavigationBar ulaşmak için:
Ancak, saydamlık, bunu alıyorum dedim. Arka plan görünümü anlıyorum bu görünüm biraz daha hafif hale getirecek beyaz,
Hala saydamlık yaparken orijinal rengi elde etmek için herhangi bir yolu var mı? Burada gösterilen Facebook zengin, mavi rengi, kendi bar almak mümkün olmuştur fark ettik:
..yani bir yolu olmalı biliyorum. Arka plan manzarası belli ki burada bir fark yaratmak, ama içerik çoğu da gri/beyaz. Eğer koymak ne olursa olsun, saydamlık altında canlı renkler elde edemiyoruz gibi görünüyor.
Çözümü ile güncellendi.
İşte geliyor sonunda çözüm. aprato'nin çözümü ve UINavigationController
a sınıfı içinde özel UINavigationBar
kapsıyor aldım. I have created a repository that has this implementation listed below, along with an example app.
////////////////////////////
// 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
CEVAP
iOS 7.0.3 GÜNCELLEME:Yukarıda gördüğünüz gibi 7.0.3 şeyler değişti. Benim özü güncelledik. Umarım bu sadece insanlar yükseltme olarak gidecek.
Orijinal Cevabı: Bir diğer yanıtları iki birleştirerek hack ile sona erdi. UİNavigationBar sınıflara ve bazı ekstra boşluk ile arka katman eğer yükseklik durumunu çeşitli barlarda herhangi bir yukarı eğer kapak için ekliyorum. Katman barTintColor ayarlama her düzen subviews ve renk değişiklikleri düzeltilmiş olur.
Özü: 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);
}
Nasıl Android Şeffaf Etkinlik oluşturm...
Nasıl Onaltılık renk kodu kullanarak R...
Elde proxy sunucusu ile çalışmak için ...
Nasıl bir arka plan android %20 şeffaf...
Bahar Güvenlik kullanırken, fasulye ge...