iOS 7.1 업데이트 : UINavigationBar에서 알파 채널을 수정하는 해결 방법이이 업데이트에서 무시 된 것 같습니다. 지금 가장 좋은 해결책은 '그것을 다루는 것'이며, 원하는 색상이 반투명 효과를 낼 수 있기를 바랍니다. 나는 아직도이 문제를 해결하는 방법을 찾고 있습니다.
iOS 7.0.3 업데이트 : 우리가 만든 GitHub 라이브러리가 iOS 7.0.3을 사용할 때이 문제를 약간 해결하도록 업데이트되었습니다. 불행히도 iOS 7.0.2 및 이전 버전과 iOS 7.0.3에서 생성 된 두 가지 색상을 모두 지원하는 마법 공식은 없습니다. Apple이 채도를 개선 한 것처럼 보이지만 불투명도는 떨어집니다 (흐린 반투명도는 불투명도 수준에 의존하기 때문에). 나는 다른 사람들과 함께 이것에 대한 훨씬 더 나은 수정을 위해 노력하고 있습니다.
나는 많은 사람들이 이미 iOS 7이 반투명 UINavigationBar의 색상을 채도가 떨어지는 문제에 직면했다고 확신합니다.
내 목표는이 색조 색상으로 UINavigationBar를 달성하는 것이지만 반투명합니다.
그러나 반투명으로, 나는 이것을 얻고 있습니다. 배경보기는 흰색 이므로이보기를 조금 더 밝게 만듭니다.
반투명도를 유지하면서 원래 색상을 얻을 수있는 방법이 있습니까? Facebook이 다음과 같이 막대가 풍부하고 푸른 색이 될 수 있음을 알았습니다.
.. 그래서 어떤 방법이 있어야한다는 것을 알고 있습니다. 백그라운드 뷰는 여기에서 분명히 차이를 만들지 만 대부분의 내용은 회색 / 흰색입니다. 바 색조 색상에 관계없이 반투명 상태에서 선명한 색상을 얻을 수없는 것 같습니다.
솔루션으로 업데이트되었습니다.
여기에 내가 찾은 해결책이 있습니다. 나는 aprato 의 솔루션을 취한 다음 하위 클래스 UINavigationBar
내 에서 사용자 정의를 포함했습니다 UINavigationController
. 아래에이 구현이있는 리포지토리와 예제 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
UINavigationBar
iOS 7에서 반투명에 노출되었을 때 가능한 최상의 밝기를 보정하는 솔루션입니다 .
UINAvigationBar
입니까?