编辑高度的UIToolbar

问题描述:

viewDidLoad我设定的高度不同于标准的44点。例如,我希望它是35分。使用代码:编辑高度的UIToolbar

CGRect frame = [[UIScreen mainScreen] bounds]; 
[self.navigationController.toolbar setFrame:CGRectMake(0, frame.size.height-35.f, frame.size.width, 35.f)]; 

和之前检查框的尺寸后,我得到的打印输出:

Before: {{0, 623}, {375, 44}} 
After: {{0, 632}, {375, 35}} 

但是在模拟器此检查时,高度不断44分。当我使用像350,高度大的值也是如此,我得到:

Before: {{0, 623}, {375, 44}} 
After: {{0, 317}, {375, 350}} 

我还以为子类UIToolbar和创造我自己的,但UIToolbarUINavigationController是一个只读属性。我还可以尝试什么?

+0

你有没有试过在'viewWillAppear:'中设置它的框架? – n00bProgrammer 2014-11-04 05:47:02

+0

是的。尽管'viewWillAppear:'实际上是在'viewDidLoad'之后调用的,所以即使它允许它工作,我也不认为这是必要的。 – 2014-11-04 05:51:54

+1

在子类中重写'layoutSubviews'似乎是我最好的选择。我尝试了许多可能的解决方案,但为'UIToolBar'添加'@ implementation'块并重写'layoutSubviews'是我发现的唯一工作解决方案。 – n00bProgrammer 2014-11-04 06:08:37

请尝试以下步骤,

  1. 子类的UIToolbar
  2. 覆盖的drawRect中
  3. 指定工具栏

希望这可以帮助你的新的行为。

+0

虽然子类化会很好,但我无法将“UIToolbar”的子类指定给只读属性(“UINavigationController”就是这种情况)。如果你能想到解决这个问题的方法,那会很有帮助。我的目标是让我的工具栏在视图控制器之间保持不变,而不会改变内容/上下文。 – 2014-11-04 06:44:40