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,我用两个方法更新答案。