9

新しい iOS 7 プロジェクトで UIToolbar の高さを変更しようとしていますが、変更できません。

UINavigationController を使用して、いくつかの UIViewController を管理しています。ナビゲーション コントローラーを介してツールバーのフレームを設定しようとしましたが、悲しいことに、ツールバーのプロパティは読み取り専用です。

「 UIToolbar の高さを変更する方法はありますか? 」を見ましたが、うまくいきませんでした。

UIToolbar をサブクラス化し、カスタムの高さを強制し、ストーリーボードで適切なクラスを設定しようとしましたが、どちらも機能しませんでした。高さは 44px のままです。

自動レイアウトはツールバーのサイズに制約を設定できず、すべてのフィールドが無効になっていると思いました。

ツールバーよりも高さが高い UIBarButtonItem にカスタム ビューを設定できます。大きなアイテムは正しくレンダリングされますが、ツールバーからオーバーフローします。

これは私ができる最善のことです:スクリーンショット

iOS 7 で UIToolbar の高さを変更することは実際に可能ですか? それとも、それを模倣するためにたくさんのカスタム アイテムを作成することになっていますか?

4

6 に答える 6

6

を使用した@Antoineの提案に従って、sizeThatFits高さ64のツールバーサブクラスを次に示します。

import UIKit

class Toolbar: UIToolbar {
    override func layoutSubviews() {
        super.layoutSubviews()
        frame.size.height = 64
    }

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

次に、ナビゲーション コントローラーを初期化するときに、そのクラスを使用する必要があると言います。

let navigationController = UINavigationController(navigationBarClass: nil, toolbarClass: Toolbar.self)
于 2015-11-30T16:08:55.497 に答える
-5

UIToolbar次のコードを使用して、iOS 7の高さをカスタマイズできます。私はそれをテストし、現在のプロジェクトで作業しています。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];

    // Make the Toolbar visible with this line OR check the "Shows Toolbar" option of your Navigation Controller in the Storyboard
    [self.navigationController setToolbarHidden:NO];

    CGFloat customToolbarHeight = 60;
    [self.navigationController.toolbar setFrame:CGRectMake(0, self.view.frame.size.height - customToolbarHeight, self.view.frame.size.width, customToolbarHeight)];
}
于 2014-01-14T03:11:20.330 に答える