2016-12-07 5 views
0

を設定し、他の項目を検出することは私が見られるように、このコードUINavigationItem barButtonItemのCustomViewは、ここで幅

navigationItem.leftBarButtonItem!.customView = someCustomView 

を使用してleftBarButtonItemcustomViewを追加する方法を知っている今、私のナビゲーションバー

enter image description here

です私のスクリーンショットはこちら

enter image description here

しかし、質問は、leftBarButtonItemの横にnavigationItemがあると検出できたので、幅を動的に設定できるかどうかです。スクリーンショットのように重複する代わりに?

ここ

enter image description here

注意私のテスト例以上のスクリーンショットです:はい、私はコードsomeCustomView.frame = CGRect(.....)を使用してフレームを設定する方法を知っても、UINavigationBar /商品は、NSObjectのから継承ではなく、ということらしいですUIViewの

編集:のでどうやら、UINavigationBar/UINavigationItemトンの一部だけを、多くのコーディングを行って再コーディング、および研究の後帽子は自動的にの左右に応じてサイズが変更されますbarButtonsはちょっと気分が悪いですtitleViewです。

だから私の知識によると、これを達成するための唯一の方法: enter image description here

は私の質問に答えていないUINavigationItemtitleViewプロパティを使用することです。

答えて

0

-hopefully-これらが探しているの出力である場合:

enter image description here

enter image description here

次に、あなたはnavigationItemのtitleViewを設定する必要があります。

カスタムビュー受信者が の場合、ナビゲーションバーの中央に表示されます。

これは、オーバーラップしないように幅を動的に処理します。

例えば、follwoingコードスニペットでは、私はUILabelとしてnavigationItem.titleViewの値を設定します(そしてもちろん、あなたはそれをカスタマイズすることができます):

override func viewDidLoad() { 
    super.viewDidLoad() 

    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 40)) 
    label.text = "Some very long text that should be in the middle of the navigation bar" 
    label.textAlignment = .center 
    label.textColor = UIColor.blue 

    navigationItem.titleView = label 
} 

出力は、上記のスクリーンショットのようになります。 。スクリーンショットに表示さ「項目01」「項目02」「項目03」をストーリーボードに直接添加され、それらを追加することに関連したコードが存在しないこと

注。あなたは "項目01" ボタンの隣ににラベルをできるようにしたい場合は

、単にそれを聞かせて:これは助け

enter image description here

希望:

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 300, height: 40)) 
     label.text = "my label" 
     label.textAlignment = .left 
     label.textColor = UIColor.blue 

     navigationItem.titleView = label 

出力は次のようにする必要があります。

+0

私はこれも考えましたが、titleViewsのものは 'leftAligned'ではなく' centered'です。 –

+0

@ ZonilyJameでも、あなたがUILabelとして設定したい場合(あなたの場合はそれが必要です)、私の編集をチェックしてください。 –

+0

私もその仲間をやってくれました。努力してくれてありがとうございます。しかし、私がここで探しているのは、 'NavBar'の項目を検出し、それに応じて幅を設定することです。 'NavigationBar Title'が自動的に切り詰める方法と同じように、この場合、' UINavigationItem'の動作を再現する方法を探しています –

関連する問題