2016-08-22 19 views
1

ナビゲーションコントローラのUIToolbarの高さを変更したいのですが、Xcode 7.3とiOS 9ではすぐにはできません。viewDidLoadでCGRectMakeを使ってフレームを設定しようとしましたが、動作しませんでした。また、カスタムUIToolbar()を初期化しようとしましたが、高さは変わりません。UIToolbarの高さを変更するには?

編集:答えの1を1として

、私は、プレス制御を選択し、ツールバーを試してみましたが、もう一度ツールバーを選択しますが、どのような私が得たことは代わりにあるスクリーンショットの下に表示されています:

Screenshot

答えて

1

あなたがして、それを使用することができます。 最小または最大の高さの場合は45を変更してください。

override func layoutSubviews() { 
    super.layoutSubviews() 

    var frame = self.bounds 
    frame.size.height = 45 
    self.frame = frame 
} 

override func sizeThatFits(size: CGSize) -> CGSize { 
    var size = super.sizeThatFits(size) 
    size.height = 45 
    return size 
} 

同様に使用してください。

let navigationController = UINavigationController(navigationBarClass: nil, toolbarClass: Toolbar.self) 

おかげ

+0

私はそれを置く場所を尋ねてもいいですか? UINavigationControllerで?このメソッドは、そのスーパークラスのメソッドをオーバーライドしているようではありません。 – victorleungtw

+0

@victorleungtwが追加されました。 – SwiftDeveloper

+1

それは完璧に働いています –

0

自動レイアウトを使用する場合は、高さ制約をStoryboardに設定できます。

それとも、このようにプログラム的にそれを行うことができます。

myToolbar.frame = CGRectMake(0, 50, 320, 35) 
+0

ありがとうございますが、自動レイアウトについては忘れています。 – victorleungtw

2

あなたはストーリーボードを使用してされているか否かに応じて、2つのオプションがあります。

オプション1:ストーリーボード

1)あなたのストーリーボードにして、選択したツールバーを押してから移動して、Ctrlキーを押しながら、あなたはIBActionを割り当てたかのように再びツールバーをクリックしてくださいを使用。そして、次の操作を取得します:

(第1の画像の品質のために申し訳ありませんが、Ctrlキーを押しながら、私はスクリーンショットを作ることができなかったので、自分の携帯電話でスナップを取らなければならなかった)

enter image description here enter image description here

2)次に、制約を取得し、値を変更する高さにキーを押します。

enter image description here

O第2章:スウィフトを使用して例えば55 pxの高さ

yourToolBar.frame = CGRect(x: 0, y: view.frame.size.height - 55, width: view.frame.size.width, height: 55) 
+0

試したオプション1が、あなたのスクリーンショットと同じウィンドウを開くことができませんでした。鉱山には "アウトレット"、 "アウトレットコレクション"、 "アウトレットアウトレット"、 "アウトレットアウトレットコレクション"のオプションしかありません。ところで、自動レイアウトはストーリーボードでは無効になっています。 – victorleungtw

+0

また、オプション2を試して、強参照@IBOutletを使用してフレームをUINavigationControllerに設定してください。どちらも変化しません。 – victorleungtw

+0

ストーリーボードを使用している場合は、オプション1を使用する必要があります。ツールバーを選択して、Ctrlキーを押しながらツールバーを再度クリックしてもよろしいですか?それは、それぞれの端に青い点を持つ青い線を示すべきです。私はこれを1分前に試してみました。それが正しいとすれば間違いなく動作します - そして、これも前にアプリで使ったことがあります。 – tech4242

関連する問題