iOS11.0에서 UINaviationBar 높이가 올바르게 표시되지 않는 현상 정보

개시하다


안녕하세요.
설치로는 안 좋을 수도 있지만 앱 화면을 만들 때
UINaviation Controller처럼 좌우의 과도 관계가 없어도 NavigationBar를 원할 때가 있다
나는 Navigation Item 같은 버튼이 기분이 좋아서 UINaviagation Bar를 만들어 사용했다.
Xcode 9은0에서 Storyboard 또는 코드를 사용하여 UINaviationBar를 생성할 때는 다음과 같습니다.

해결책


이번에 나는 그것을 하기 위해 사용자 정의 반을 만들었다.
Storyboard에 올바르게 표시하는 방법 등은 사용자 정의 레벨을 만들지 않아도 해결하려고 하지만 좀 엄격하다...
CustomNavigationBar.swift
import UIKit

@IBDesignable class CustomNavigationBar: UINavigationBar {

    override func layoutSubviews() {
        super.layoutSubviews()
        if #available(iOS 11.0, *) {
            for subview in self.subviews {
                let stringFromClass = NSStringFromClass(subview.classForCoder)
                if stringFromClass.contains("BarBackground") {
                    subview.frame = self.bounds
                } else if stringFromClass.contains("BarContentView") {
                    subview.frame.origin.y = UIApplication.shared.statusBarFrame.height
                    subview.frame.size.height = self.bounds.height - UIApplication.shared.statusBarFrame.height
                }
            }
        }
    }
}
@IBDesignable Storyboard에서 높이가 올바르게 표시됩니다.
그러나 특별히 그릴 것이 없기 때문에 원래의 목적과 다르다는 점에 유의해야 한다.
※ UINaviationBar의 외관 높이를 조절하는 것 같습니다.(UINaviation Bar의subviews를 보여 주려고 했지만 어떤 캐릭터가 어떤 캐릭터인지 자세히 조사하지 못했는데... 미안합니다)
UINavigationBar
  ├── UIBarBackground
  ├── UINavigationBarLargeTitleView
  ├── UINavigationBarContentView
  └── UINavigationBarModernPromptView

최후


Xcode9.0에서 UINaviationBar의 미세한 변경 사항을 완전히 확인할 수 없습니다.
이번엔 행동하기 위해 잠시 자리를 피했어요...
나중에 다시 확인하고 싶습니다.

참고 자료

  • How to change navigationBar height in iOS 11? - stackoverflow
  • iOS 11 navigation bar height customizing - stackoverflow
  • 시청해 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기