다른보기들, 심지어 네비게이션 바까지 다음과 같은 일종의 “팝업”보기를 표시하고 싶습니다 :
- 전체 화면 검정색 배경과 0.5 알파를 사용하여
UIViewController
아래 에 다른 화면을 표시합니다 . UIView
정보가있는 중간에 있는 창 (모든 것을 알고 싶다면 달력).
이를 위해 두 UIViews
(배경 및 창) 가 포함 된 UIViewController를 만들었으며 표시하려고합니다. 나는 간단한 시도 [mySuperVC addSubview:myPopUpVC.view]
했지만 여전히 위의 탐색 표시 줄이 있습니다.
나는 그것을 모달로 제시하려고했지만 UIViewController
밑면이 사라지고 투명도 효과를 잃습니다.
이 작업을 수행하는 아이디어는 매우 간단합니다.
감사!
답변
keyWindow에 직접 뷰를 추가하면됩니다.
UIView *myView = /* <- Your custom view */;
UIWindow *currentWindow = [UIApplication sharedApplication].keyWindow;
[currentWindow addSubview:myView];
업데이트-Swift 4.1 이상
let currentWindow: UIWindow? = UIApplication.shared.keyWindow
currentWindow?.addSubview(myView)
답변
[self.navigationController.view addSubview:overlayView];
당신이 정말로 원하는 것입니다
답변
나를 위해 일하는 간단한 우아한 솔루션이 있습니다. 탐색 표시 줄의 z 위치를보기 아래로 설정할 수 있습니다.
self.navigationController.navigationBar.layer.zPosition = -1;
완료되면 다시 0으로 설정하십시오.
답변
확인 된 응답의 신속한 버전 :
스위프트 4 :
let view = UIView()
view.frame = UIApplication.shared.keyWindow!.frame
UIApplication.shared.keyWindow!.addSubview(view)
스위프트 3.1 :
let view = UIView()
view.frame = UIApplication.sharedApplication().keyWindow!.frame
UIApplication.sharedApplication().keyWindow!.addSubview(view)
답변
NavigationController의 하위보기로 추가하십시오.
[self.navigationController.navigationBar addSubview: overlayView)]
창 위에 추가 할 수도 있습니다.
UIView *view = /* Your custom view */;
UIWindow *window = [UIApplication sharedApplication].keyWindow;
[window addSubview:view];
도움이 되었기를 바랍니다.. 🙂
답변
빠른 Dalef 훌륭한 솔루션 :
self.navigationController?.view.addSubview(view)
답변
@Nam의 답변은 사용자 정의보기를 표시하고 싶지만 사용자 정의보기에 사용자 상호 작용이 필요한 경우에 대한 상호 작용을 비활성화해야합니다navigationBar
.
self.navigationController.navigationBar.layer.zPosition = -1
self.navigationController.navigationBar.isUserInteractionEnabled = false
Nam의 답변에서 말했듯이 이러한 변경 사항을 되 돌리는 것을 잊지 마십시오.
self.navigationController.navigationBar.layer.zPosition = 0
self.navigationController.navigationBar.isUserInteractionEnabled = true
확장 기능으로 더 나은 방법으로이를 수행 할 수 있습니다.
extension UINavigationBar {
func toggle() {
if self.layer.zPosition == -1 {
self.layer.zPosition = 0
self.isUserInteractionEnabled = true
} else {
self.layer.zPosition = -1
self.isUserInteractionEnabled = false
}
}
}
그리고 간단히 다음과 같이 사용하십시오.
self.navigationController.navigationBar.toggle()