pujiaxin33/JXSegmentedView

使用自定义导航栏,修改导航栏宽度后,标题会跳动

Open

#211 opened on Aug 1, 2022

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Swift (419 forks)github user discovery
help wanted

Repository metrics

Stars
 (2,883 stars)
PR merge metrics
 (PR metrics pending)

Description

使用自定义导航栏,修改导航栏宽度后,标题会跳动。使用以下代码自定义UINavigationBar,在demo中Main将导航栏修改成该类,可复现

class JGJNavigationBar: UINavigationBar {
    @objc var margins: CGFloat = 16
    override func layoutSubviews() {
        super.layoutSubviews()

        if #available(iOS 13.0, *) {
            for view in subviews {
                if "\(view.self)".contains("UINavigationBarContentView") {
                    let margins = view.layoutMargins
                    self.margins = margins.left
                    view.frame = CGRect(x: -margins.left, y: view.bounds.origin.y, width: view.bounds.size.width  + margins.left + margins.right, height: view.bounds.size.height)

                    break
                }


            }
        } else {
            for view in subviews {
                if "\(view.self)".contains("ContentView") {
                    view.layoutMargins = UIEdgeInsets(top: view.layoutMargins.top, left: 0, bottom: view.layoutMargins.bottom, right: 0)
                    self.margins = view.layoutMargins.left
                    break
                }
            }
        }
    }
}

Contributor guide