在iOS 7中更改UIToolbar的高度

Fab*_*ing 9 toolbar uitoolbar ios ios7

我试图在新的iOS 7项目中更改我的UIToolbar的高度,但我无法做到.

我正在使用UINavigationController来管理一些UIViewController.我尝试通过导航控制器设置工具栏的框架但是唉,工具栏属性是只读的.

我看着" 有没有办法改变UIToolbar的高度? "但这不起作用.

我尝试了对UIToolbar进行子类化,强制自定义高度并在Storyboard中设置正确的类,但这两者都不起作用,高度保持为44px.

我认为自动布局无法对工具栏的大小设置任何约束,每个字段都被禁用.

我可以在UIBarButtonItem中设置一个比工具栏更高的自定义视图.大项目将被正确呈现,但它将从工具栏溢出.

这是我能做的最好的:截图

实际上是否可以在iOS 7中更改UIToolbar的高度?或者我应该创建一堆模仿它的自定义项目?

gpb*_*pbl 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
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,在初始化导航控制器时,我说它应该使用该类:

let navigationController = UINavigationController(navigationBarClass: nil, toolbarClass: Toolbar.self)
Run Code Online (Sandbox Code Playgroud)


小智 -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)];
}
Run Code Online (Sandbox Code Playgroud)