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! 그 트릭을하는 것처럼 보였다.
나는이 주제가 오래되었다는 것을 알고 있지만 사람들이 drawRect 메소드를 오버로드하지 않고 어떻게 수행되는지 알고 싶다면.
이것이 당신이 필요로하는 것입니다 :
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.opaque = YES;
self.navigationController.navigationBar.tintColor = [UIColor clearColor];
self.navigationController.navigationBar.backgroundColor = [UIColor clearColor];
아래 코드는이 스레드에 대해 선택된 최상위 답변을 확장하여 아래쪽 테두리를 제거하고 텍스트 색상을 설정합니다.
이 코드의 마지막 두 줄은 투명도를 설정합니다. 이 스레드에서 해당 코드를 빌려서 완벽하게 작동했습니다!
"clipsToBounds"속성은 내가 찾은 코드로 투명도를 설정하지 않고 OR를 사용하여 아래쪽 경계선을 제거했습니다 (따라서 단색 흰색 / 검정 등 배경을 사용하기로 결정한 경우 여전히 경계선이 없습니다).
"tintColor"라인 (두 번째 코드 라인)은 뒤로 버튼을 연한 회색으로 설정합니다.
barTintColor를 백업으로 유지했습니다. 왜 투명성이 작동하지 않는지 모르겠지만, 그렇지 않은 경우, 이전에 사용했던 BG 화이트를 원합니다
let navigationBarAppearace = UINavigationBar.appearance() navigationBarAppearace.tintColor = UIColor.lightGray navigationBarAppearace.barTintColor = UIColor.white navigationBarAppearace.clipsToBounds = true navigationBarAppearace.isTranslucent = true navigationBarAppearace.setBackgroundImage(UIImage(), for: .default) navigationBarAppearace.shadowImage = UIImage()
다음 코드를 사용해보십시오.
self.navigationController.navigationBar.translucent = YES;
스위프트 3.0 :
override func viewDidLoad() {
super.viewDidLoad()
navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
navigationController?.navigationBar.shadowImage = UIImage()
navigationController?.navigationBar.isTranslucent = true
}
C # / Xamarin 솔루션
NavigationController.NavigationBar.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
NavigationController.NavigationBar.ShadowImage = new UIImage();
NavigationController.NavigationBar.Translucent = true;
나를 위해 일한 또 다른 방법은 UINavigationBar를 서브 클래스 화하고 drawRect 메소드를 비워 두는 것입니다!
@IBDesignable class MONavigationBar: UINavigationBar {
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
// Drawing code
}}
완전히 투명하거나 사진 앱에서 볼 수있는 반투명 검정색 스타일을 사용합니까? 후자는 barStyle
속성을 로 설정하여 수행 할 수 있습니다 UIBarStyleBlackTranslucent
. 전자 ... 확실하지 않습니다. 항목을 계속 표시하려면 막대의보기 계층 구조를 파고 배경이 포함 된보기를 제거해야 할 수도 있습니다.
이것은 Swift 2.0에서 작동합니다.
navigationController!.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
navigationController!.navigationBar.shadowImage = UIImage()
navigationController!.navigationBar.translucent = true
UINavigation 막대 모양 관리 전용 인 RRViewControllerExtension을 확인하십시오 .
프로젝트에서 RRViewControllerExtension을 사용하면 재정의해야합니다.
-(BOOL)prefersNavigationBarTransparent;
당신이 viewcontroller에서.
스위프트 4.2
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
(viewWillAppear에서) 다음 viewWillDisappear에서 실행 취소하려면
self.navigationController?.navigationBar.shadowImage = nil
self.navigationController?.navigationBar.isTranslucent = false
extension UINavigationBar {
var isTransperent: Bool {
get {
return false // Just to satisfy property
}
set {
if newValue == true {
self.shadowImage = UIImage()
self.isTranslucent = true
self.setBackgroundImage(UIImage(), for: .default)
}else{
self.shadowImage = UIImage()
self.isTranslucent = false
self.setBackgroundImage(nil, for: .default)
}
}
}
}
참고 URL : https://stackoverflow.com/questions/2315862/make-uinavigationbar-transparent
'IT story' 카테고리의 다른 글
영역 파일을 찾는 방법은 무엇입니까? (0) | 2020.04.16 |
---|---|
Maven : POM에 종속성을 추가 한 후 저장소를 업데이트하는 명령 (0) | 2020.04.16 |
줄 바꿈으로 PHP 문자열을 분해 (0) | 2020.04.16 |
Ruby의 파일 경로에서 확장자가없는 파일 이름을 얻는 방법 (0) | 2020.04.16 |
수퍼 타입 목록을 하위 유형 목록으로 캐스트하는 방법은 무엇입니까? (0) | 2020.04.16 |