创建一个自定义导航栏,如相机胶卷图像选择器

时间:2015-05-19 10:44:52

标签: ios swift

我有一个模态显示的视图控制器,它不在导航堆栈中,但需要一个导航栏来取消选择。 VC由另一个VC呈现,这是一个弹出窗口(真实的不是全屏视图)。我需要一个导航栏,在右上角显示标题和取消按钮,就像标准的相机胶卷图像选择器一样。

这是我到目前为止所尝试的内容:

  • 我通过将导航栏拖动到故事板中的视图并使用约束附加它来手动添加导航栏。这很好但问题是导航栏太小了。它并不介意它上方的状态栏,因此取消按钮和标题与状态栏非常接近(几乎重叠)。
  • 试图增加导航栏的高度,但苹果不允许更改导航栏的框架。
  • 尝试使用约束将其向下推,但由于控制器具有白色背景,因此状态栏会产生白色背景颜色。
  • 仅针对需要该栏的一个视图实施了新的导航控制器。但这会给我一个标准的导航栏,左上角有一个箭头,由于视图以模态方式呈现(从底部),因此不太适合导航的感觉。这似乎也有点开销。

如何实现类似于相机滚动的导航栏?

BTW:我使用swift。

修改
我试过这个,但设置高度值明显失败,因为它不被允许。

@IBOutlet weak var navigationBar: UINavigationBar!

override func viewDidLoad() {
    navigationBar.frame.height = 44.0
}

1 个答案:

答案 0 :(得分:0)

我实际上找到了解决方法:

  1. 将VC设置为导航栏的代理
  2. 符合协议UIBarPositioningDelegate
  3. 实施
    func positionForBar(bar: UIBarPositioning) -> UIBarPosition { return .TopAttached }
  4. 按下20p
  5. 约束下推导航栏