我想让UI如下,
我试图增加UINavigationController的高度,如
[self.navigationController.navigationBar setFrame:CGRectMake(0, 0, 320, 110)];
但导航标题和BarButtonItem显示为向下。 我无法添加隐藏导航,因为我正在使用使用Left BarButtonItem的第三方侧面菜单。
我可以很好地保持导航,因为它在下面我添加了uiview作为子视图,其背景颜色与导航颜色相同但是......之间出现了细线:(
答案 0 :(得分:3)
您无法增加UINavigationBar的高度。添加一个UIView,其中包含UINavigationBar下面的元素。
然后UINavigationBar下面会有额外的行。您可以删除该行。请参阅How to hide iOS7 UINavigationBar 1px bottom line
或者使用此代码(我刚从swift中的链接复制它,将其转换为Objective-C)
import UIKit
class ViewController: UIViewController {
private var shadowImageView: UIImageView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if shadowImageView == nil {
shadowImageView = findShadowImage(under: navigationController!.navigationBar)
}
shadowImageView?.isHidden = true
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
shadowImageView?.isHidden = false
}
private func findShadowImage(under view: UIView) -> UIImageView? {
if view is UIImageView && view.bounds.size.height <= 1 {
return (view as! UIImageView)
}
for subview in view.subviews {
if let imageView = findShadowImage(under: subview) {
return imageView
}
}
return nil
}
}
这是结果
答案 1 :(得分:0)
实际上你无法改变UINavigationBar
的高度。您的实际ViewController视图将从TopLayoutGuide
(垂直空间)的64像素开始
状态栏高度为20像素
导航栏高度为44像素
因此,要设计此类UI,只需执行以下步骤
即可在该视图控制器上隐藏NavigationBar
,如
self.navigationController.navigationBarHidden = YES;
self.navigationItem.hidesBackButton = YES;
然后将来自vertical space
的{{1}}的故事板中的视图添加为TopLayoutGuide
。并根据您的要求进行设计。所以你可以
只需提供此外观并使用IBOutlets
和IBActions
处理它
每个项目
您还可以添加UILable
来显示屏幕标题。
答案 2 :(得分:0)
您无法增加UINavigationBar的大小。这是标准尺寸44(导航高度)+ 20(状态栏的大小)。在这里,你有两个选择。
首先,通过添加菜单,仪表板标题标签&amp; UINavigationBar的通知图标。将作业,条件和面试添加为导航栏下方的单独视图。
第二,通过自定义整个视图,如@Pushkraj所提到的那样,隐藏当前导航栏并添加包含所有UI元素的自己的视图。