2017-10-17 15 views
2

IOS 11により、メインラベルが上部から少し上に移動するようになりました。この問題はIOS 11でのみ発生します。異なるIOSではすべてが正常に見えます。設定ヘッダとIOS 11のみ:ナビゲーションバーのラベルがオフになっています

コードサンプル:

private func setHeader(agentName: String = "", isTyping: Bool = false) -> Void { 
    if (agentName.isEmpty) { 
     self.containerViewController?.navigationItem.titleView = nil 
    } else { 
     let headerView: UIView = { 
      let rect = CGRect(x: 0, y: 0, width: 320, height: 44) 
      let uiview = UIView(frame: rect) 

      return uiview 
     }() 


     let headerLabel: UILabel = { 
      let label = UILabel(frame: CGRect(x: 0, y: 0, width: headerView.frame.width, height: 20)) 
      label.font = UIFont.systemFont(ofSize: 18) 
      label.textAlignment = .center 
      label.translatesAutoresizingMaskIntoConstraints = false 
      return label 
     }() 

     let subheaderLabel: UILabel = { 
      let label = UILabel(frame: CGRect(x: 0, y: 0, width: headerView.frame.width, height: 12)) 
      label.font = UIFont.systemFont(ofSize: 12) 
      label.translatesAutoresizingMaskIntoConstraints = false 
      label.text = self.title 
      return label 
     }() 


     headerView.addSubview(headerLabel) 
     headerView.addSubview(subheaderLabel) 

     let viewsDictionary = ["header": headerLabel, "subheader": subheaderLabel] 
     headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[header]|", options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary)) 
     headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[subheader]|", options: NSLayoutFormatOptions(), metrics: nil, views: viewsDictionary)) 
     headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[header(20)]-[subheader]", options: [], metrics: nil, views: viewsDictionary)) 

     self.containerViewController?.navigationItem.titleView = headerView 

    } 
} 

Label off

答えて

2

は、IOSの11以降では、ビューは、現在の自動レイアウトを使用してレイアウトされているツールバーに追加します。 headerViewにサイジング制約を追加する必要があります。たとえば、

headerView.widthAnchor.constraintEqualToConstant(320.0).isActive = true 
headerView.heightAnchor.constraintEqualToConstant(44.0).isActive = true 

そうしないと、自動レイアウトでヘッダービューの固有のコンテンツサイズが使用されますが、これは予想外の可能性があります。

詳細については、WWDC 2017セッションUpdating your app for iOS 11を参照してください。

0

@beyowulfはサイジング制約を追加する必要があると言いました。あなたのケースでは、height constraintを追加すると大丈夫だと思います。

headerView.heightAnchor.constraint(equalToConstant: 22.0).isActive = true 
関連する問題