Ios 如何实现AppStore排名列表页面的导航栏效果 我使用以下代码增加导航栏的高度 override func viewDidLayoutSubviews() { setUpSegmentControll() let view = UIView(frame: CGRect(x: 0, y: 44, width: ScreenWidth, height: 40)) view.backgroundColor = UIColor.init(colorLiteralRed: 89/255, green: 89/255, blue: 89/255, alpha: 1) segmentControll.center.x = view.center.x view.addSubview(segmentControll) self.navigationController?.navigationBar.addSubview(view) } 但是片段点击没有效果,代码有什么问题

Ios 如何实现AppStore排名列表页面的导航栏效果 我使用以下代码增加导航栏的高度 override func viewDidLayoutSubviews() { setUpSegmentControll() let view = UIView(frame: CGRect(x: 0, y: 44, width: ScreenWidth, height: 40)) view.backgroundColor = UIColor.init(colorLiteralRed: 89/255, green: 89/255, blue: 89/255, alpha: 1) segmentControll.center.x = view.center.x view.addSubview(segmentControll) self.navigationController?.navigationBar.addSubview(view) } 但是片段点击没有效果,代码有什么问题,ios,swift3,navigationbar,Ios,Swift3,Navigationbar,您需要增加导航栏的大小。试试下面的代码,效果很好 import UIKit /*extension UINavigationBar { open override func sizeThatFits(_ size: CGSize) -> CGSize { var rect = self.frame; let screenRect = UIScreen.main.bounds rect.size.width = screenRect

您需要增加导航栏的大小。试试下面的代码,效果很好

import UIKit

/*extension  UINavigationBar {
    open override func sizeThatFits(_ size: CGSize) -> CGSize {
        var rect = self.frame;
        let screenRect = UIScreen.main.bounds
        rect.size.width = screenRect.size.width
        rect.size.height = 104
        return rect.size
    }
}*/

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.navigationController!.navigationBar.clipsToBounds = true
}
override func viewDidAppear(_ animated: Bool) {
    self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 104.0)

}
override func viewWillDisappear(_ animated: Bool) {
    self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0)
}


override func viewDidLayoutSubviews() {

    let segmentControll = UISegmentedControl(items: ["1","2"])
    segmentControll.frame = CGRect(x: 0, y: 5, width: 300, height: 30)
    let view  = UIView(frame: CGRect(x: 0, y: 64, width: UIScreen.main.bounds.size.width, height: 40))
    view.backgroundColor = UIColor.init(colorLiteralRed: 89/255, green: 89/255, blue: 89/255, alpha: 1)
    segmentControll.center.x = view.center.x
    view.addSubview(segmentControll)
    self.navigationController?.navigationBar.addSubview(view)

}

}您必须增加导航栏的高度。请参阅下面的链接以增加导航栏的高度


输出屏幕是什么样子的?创建一个自定义视图并在导航栏下修复它?隐藏或显示在ViewWillDisplay和ViewWillEnglishe方法上。感谢您的回复,但所有页面的UINavigationBar将增加,如何增加一个页面删除扩展UINavigationBar,我用两个方法更新答案。