如何将提示位置移动到标题下方或后退按钮位置

Posted

技术标签:

【中文标题】如何将提示位置移动到标题下方或后退按钮位置【英文标题】:How to move prompt position below title OR move back button position 【发布时间】:2015-06-09 17:04:07 【问题描述】:

我想要一个大标题,下面有小文本,而后退按钮不向下移动。

期望的结果:

带有提示和标题:

我将时间设置为标题,这与我想要的相反,以便将名称放在顶部

带有自定义navigationItem.titleView

在第二张照片中,我将高度添加到 navigationBar。这非常接近我想要的,但我希望后退按钮保持在顶部。如果我可以移动后退按钮,我可以更改自定义 titleView 的约束。

当前代码:

func createTitleView() 
  let titleView = UIView()

  let titleLabel = UILabel()
  titleLabel.text = "Pete's Diner"
  titleLabel.textColor = UIColor.whiteColor()
  titleLabel.font = UIFont.boldSystemFontOfSize(16.0)
  titleLabel.setTranslatesAutoresizingMaskIntoConstraints(false)

  let descLabel = UILabel()
  descLabel.text = "Open 9AM - 9PM"
  descLabel.textColor = UIColor.whiteColor()
  descLabel.font = UIFont.systemFontOfSize(14.0)
  descLabel.setTranslatesAutoresizingMaskIntoConstraints(false)

  titleView.addSubview(titleLabel)
  titleView.addSubview(descLabel)

  titleView.addConstraint(NSLayoutConstraint(
    item: titleView, attribute: .CenterX, relatedBy: .Equal,
    toItem: titleLabel, attribute: .CenterX, multiplier: 1.0, constant: 0))
  titleView.addConstraint(NSLayoutConstraint(
    item: titleView, attribute: .CenterX, relatedBy: .Equal,
    toItem: descLabel, attribute: .CenterX, multiplier: 1.0, constant: 0))
  titleView.addConstraint(NSLayoutConstraint(
    item: titleView, attribute: NSLayoutAttribute.CenterYWithinMargins, relatedBy: NSLayoutRelation.Equal,
    toItem: titleLabel, attribute: NSLayoutAttribute.CenterYWithinMargins, multiplier: 1.0, constant: 12))
  titleView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat(
    "V:[titleLabel]-2-[descLabel]", options: nil, metrics: nil, views: ["titleLabel": titleLabel, "descLabel": descLabel]))

  navigationItem.titleView = titleView

  let nav = navigationController?.navigationBar
  nav!.barTintColor = UIColor.customGreenColor()
  nav!.tintColor    = UIColor.whiteColor()
  nav!.translucent  = false
  nav!.frame.size.height = 60.0

侧边栏:

在视图出现约 500 毫秒后才设置约束。我尝试在viewDidLayoutSubviews 中设置titleView,但没有帮助。如果有人可以帮助我,我将不胜感激。我认为这是一个导航栏/自定义 titleView 问题。

【问题讨论】:

【参考方案1】:

我通过在视图最顶部添加一个自定义视图来解决这个问题,然后为其添加一个标签,该标签将用作字幕标签。

通过将此自定义视图停靠在导航栏的底部,跨越屏幕的整个宽度并使其高度取决于标签字体大小以及标签的顶部/底部边距,视图将紧密放置在导航栏下方。

然后您应该将导航栏和自定义视图配置为具有相同的背景颜色,然后删除导航栏的阴影图像。

【讨论】:

以上是关于如何将提示位置移动到标题下方或后退按钮位置的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 iOS 上后退按钮的位置?

按下后退按钮时如何保留可滚动区域的滚动位置?

浏览器后退按钮跳转到最后一个位置(如 maps.google.com)

当我单击浏览器后退按钮或移动设备后退按钮时,保留选定的选项卡

需要 2 个 UIBarButtonItem 后退按钮所在的位置

按下后退按钮时的自定义动画 - iOS