2017-09-20 9 views
2

カスタムナビゲーションアイテムのタイトルは、.xibファイルから読み込まれた2つのラベル(上に重なるもの)です。カスタムナビゲーションタイトルのオフセットios 11

enter image description here

それは、これを呼び出すことによって読み込まれています:それはこのように定義されます

class Utilities { 
    /// Title and subtitle format custom title in Navigation bar. Top and bottom text are centered on one another. 
    /// 
    /// - Parameters: 
    /// - navigationItem: The receiving controller's navigation item. 
    /// - titleText: Top text to be displayed a little larger and more bold. 
    /// - subtitleText: Bottom text to be displayed a little smaller and less bold. 
    class func addCustomNavigationTitle(navigationItem: UINavigationItem, titleText: String, subtitleText: String) { 
     let customNavigationTitleView = LabelSubLabelCustomHeaderView.instanceFromNib() as! LabelSubLabelCustomHeaderView 
     customNavigationTitleView.titleLabel.text = titleText 
     customNavigationTitleView.dateLabel.text = subtitleText 
     navigationItem.titleView = customNavigationTitleView 
    } 
    ... 
} 

:今

class LabelSubLabelCustomHeaderView: UIView { 
    @IBOutlet var titleLabel: UILabel! 
    @IBOutlet var dateLabel: UILabel! 

    class func instanceFromNib() -> UIView { 
     return UINib(nibName: "LabelSubLabelCustomHeaderView", bundle: nil).instantiate(withOwner: nil, options: nil)[0] as! UIView 
    } 
} 

、下のラベルを隠している、正確に22ピクセルによって押し下げられています。

このビューのフレームをviewDidAppearに設定すると、ビューをまっすぐに設定する必要があります。私はviewWillAppearと他のいくつかのことを試みました。私は文字通りそれを隠す必要があります、それを設定し、それを表示しますが、それは明らかに正しくありません。

iOS 11より前では問題ありませんでした。

ここでは私が右に作ることを願って、私のハック修正、なしで、今です:

enter image description here

そして、ここではそれはそれはiOSの10の前にどのように見えるか、どのように見えるかで、それは私のハック修正でどのように見えるか:

enter image description here

も低すぎる22個のピクセルである、アンワインドセグエがアニメーション化されたときに、ビューが不正のフレームに戻りますので、ご注意ください。 どうすればこの問題を解決できますか?事前に助けていただきありがとうございます。

編集:より詳細な制約情報:

View DateLabel

TitleLabel

+0

を参照してください。エラー/解決策がレイアウトの制約になると思います。 – ekscrypto

+0

ありがとうございます。だから私は制約を示すスクリーンショットを置くのですが、私は先に進み、より詳細なスクリーンショットを表示することができます...私は元の投稿を編集します、私は推測します... –

+0

さて、私はスクリーンショットを追加しました。これは.xibからロードされ、ナビゲーションアイテムのカスタムタイトルビューとして設定されていることに注意してください。ロードされたビューに制約を設定する方法、またはそれが可能であるかどうかはわかりません。私はナビゲーションアイテムが私のためにそれをすると思うだろう。いずれにしても、iOS 11以前の現在の制約でうまくいきました。 –

答えて

1

あなたが安全に下のラベル間の最小距離を強制カスタムビューのタイトルXIBにレイアウト制約を追加する必要がありますビューの領域。 iOS 10/11の完全な動作例については、https://github.com/ekscrypto/Swift-Tutorial-Custom-Title-View

+0

ヘルプとサンプルプロジェクトをありがとう。とても有難い。私は別の問題を抱えています。あなたのプロジェクトの例では、おそらく助けてくれるかもしれません。私は新しいスレッドを開始します。すぐに出てくるリンクを見てください。 –

+0

あなたのプロジェクトをチェックアウトしようとしましたので、私は変更をプッシュすることができましたが、それは簡単です。新しいView Controllerをプッシュするボタンを追加しました。 –

+0

https://stackoverflow.com/questions/46415168/custom-title-view-not-centered –