>source

NavigationBar에 사용자 지정보기를 추가하려고하는데 결과가 제대로 작동하지 않습니다.

public let statusBarHeight: CGFloat = {
    var heightToReturn: CGFloat = 0.0
         for window in UIApplication.shared.windows {
             if let height = window.windowScene?.statusBarManager?.statusBarFrame.height, height > heightToReturn {
                 heightToReturn = height
             }
         }
    return heightToReturn
}()
 override func viewDidLoad() {
        super.viewDidLoad()
//        self.navigationController?.navigationBar.isHidden = true
        // Do any additional setup after loading the view.
       let barView = UIView(frame: CGRect.zero)
        barView.backgroundColor = .purple
        barView.translatesAutoresizingMaskIntoConstraints = false
        
        if let navBarSize = self.navigationController?.navigationBar.frame.size {
//            barView.frame.size = CGSize(width: navBarSize.width, height: navBarSize.height + statusBarHeight)
            self.navigationController?.navigationBar.subviews.first?.insertSubview(barView, at: 0)
            NSLayoutConstraint.activate([
                barView.leadingAnchor.constraint(equalTo: (self.navigationController?.navigationBar.subviews.first!.leadingAnchor)!),
                barView.trailingAnchor.constraint(equalTo: (self.navigationController?.navigationBar.subviews.first!.trailingAnchor)!),
                barView.heightAnchor.constraint(equalToConstant: navBarSize.height + statusBarHeight )
            ])
        }
        
       
    }

노치 장치의 차이점을 확인하십시오.

  • 답변 # 1

    코드를 변경해야합니다. 이제 이미지와 같이 iPhone 12 mini를 포함한 모든 장치에서 작동합니다. 이미지 확인

    override func viewDidLoad() {
            super.viewDidLoad()
            let barView = UIView(frame: CGRect.zero)
            barView.backgroundColor = .purple
            barView.translatesAutoresizingMaskIntoConstraints = false
            if (self.navigationController?.navigationBar.frame.size) != nil {
                self.navigationController?.navigationBar.subviews.first?.insertSubview(barView, at: 0)
                NSLayoutConstraint.activate([
                    barView.leadingAnchor.constraint(equalTo: (self.navigationController?.navigationBar.subviews.first!.leadingAnchor)!),
                    barView.trailingAnchor.constraint(equalTo: (self.navigationController?.navigationBar.subviews.first!.trailingAnchor)!),
                    barView.topAnchor.constraint(equalTo: (self.navigationController?.navigationBar.subviews.first!.topAnchor)!),
                    barView.bottomAnchor.constraint(equalTo: (self.navigationController?.navigationBar.subviews.first!.bottomAnchor)!),
                ])
            }
        }
    
    

관련 자료

  • 이전 mysql - 쿼리가 제공되지 않으면 Kafka msql 커넥터 구성 파일이 작동하지 않습니다
  • 다음 python - 행에 열이 두 번 표시되는 데이터 프레임을 표시하는 방법