[ios] UINavigationBar를 투명하게 만들기
UINavigationBar를 어떻게 투명하게 만드 나요? 막대 항목을 계속 표시하고 싶지만.
답변
누구나 iOS 7 이상에서이를 달성하는 방법을 궁금해하는 경우 해결책이 있습니다 (iOS 6 호환 가능)
Objective-C에서
[self.navigationBar setBackgroundImage:[UIImage new]
forBarMetrics:UIBarMetricsDefault];
self.navigationBar.shadowImage = [UIImage new];
self.navigationBar.translucent = YES;
신속한 3 (iOS 10)
self.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.isTranslucent = true
신속한 2
self.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationBar.shadowImage = UIImage()
self.navigationBar.translucent = true
토론
설정 translucent
에 YES
탐색 모음에서 것은 인해 논의 행동에 트릭을 수행 UINavigationBar
설명서를 참조하십시오. 여기에 관련 조각을보고하겠습니다.
YES
불투명 한 사용자 정의 배경 이미지가있는 탐색 모음 에서이 속성을 설정 하면 탐색 모음이 시스템 불투명도가 1.0 미만인 이미지에 적용됩니다.
답변
iOS5에서는 탐색 모음을 투명하게 만들 수 있습니다.
nav.navigationBar.translucent = YES; // Setting this slides the view up, underneath the nav bar (otherwise it'll appear black)
const float colorMask[6] = {222, 255, 222, 255, 222, 255};
UIImage *img = [[UIImage alloc] init];
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)];
[nav.navigationBar setBackgroundImage:maskedImage forBarMetrics:UIBarMetricsDefault];
[img release];
답변
IOS7에서 :
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.shadowImage = [UIImage new];
self.navigationController.view.backgroundColor = [UIColor clearColor];
[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
답변
Swift 2.x에서이 작업을 수행하려는 사람은 :
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.translucent = true
또는 스위프트 3.x :
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
답변
이것은 작동하는 것 같습니다 :
@implementation UINavigationBar (custom)
- (void)drawRect:(CGRect)rect {}
@end
navigationController.navigationBar.backgroundColor = [UIColor clearColor];
답변
다른 사람들이 위에서 말한 것을 한 후 :
navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.isTranslucent = true
… 내 네비게이션 바는 여전히 흰색이었다 . 그래서 나는이 줄을 추가했다 :
navigationController?.navigationBar.backgroundColor = .clear
… et voila! 그 트릭을하는 것처럼 보였다.
답변
최신 베타 iOS 13.4 및 XCode 11.4로 빌드하면 허용되는 답변이 더 이상 작동하지 않습니다. 다른 방법을 찾았습니다. 베타 소프트웨어의 버그 일 수도 있지만 경우에 따라 아래에 작성하고 있습니다.
(빠른 5)
import UIKit
class TransparentNavBar :UINavigationBar {
override func awakeFromNib() {
super.awakeFromNib()
self.setBackgroundImage(UIImage(), for: .default)
self.shadowImage = UIImage()
self.isTranslucent = true
self.backgroundColor = .clear
if #available(iOS 13.0, *) {
self.standardAppearance.backgroundColor = .clear
self.standardAppearance.backgroundEffect = .none
self.standardAppearance.shadowColor = .clear
}
}
}