61

UIToolbar在 Interface Builder 中有一个,我注意到它被锁定为 44px 高。我当然想让这个更大。

Apple 是否允许调整此控件的大小?如果是这样,我该怎么做?

4

10 回答 10

65

当然,只是设置不同的框架:

[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];

这将使您的工具栏高 35 像素。当然,这需要一个 IBOutlet 或以编程方式创建 UIToolbar,但这很容易做到。

于 2010-01-26T00:08:08.917 回答
46

如果这在 SDK 6 中不起作用,可以解决如下:

选择工具栏元素并选择编辑器 > 引脚 > 高度以创建约束。转到您的视图控制器场景并选择创建的高度(44)约束,然后输入您想要的值。

于 2013-04-12T21:21:04.523 回答
39

我发现如果我在 iPad 上设置框架,在隐藏/显示工具栏时会将自身重置为 44 像素的高度。我最终不得不重写 UIToolbar 并更改方法:

// return 'best' size to fit given size. does not actually resize view. Default is return existing view size
- (CGSize)sizeThatFits:(CGSize)size {
    CGSize result = [super sizeThatFits:size];
    result.height = 55;
    return result;
};     

即使使用隐藏/显示,这也会正确调整高度。

于 2011-05-18T19:12:06.953 回答
17

在 iOS 6 中,使用自动布局,最简单的方法是在其中覆盖 UIToolbar 子类instrinsicContentSize。这是我的一个应用程序的代码,其中工具栏很高。它的侧面和底部像往常一样固定在超级视图的侧面和底部。

-(CGSize)intrinsicContentSize {
    return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
于 2013-04-25T01:31:24.300 回答
14

对于 Xcode 7.1 iOS 9,在自动布局中,大小锁定为 44px。Xcode 菜单选项 Editor > Pin > Height 不存在,而是执行以下操作:

在 InterfaceBuilder 中,单击工具栏元素以将其选中。Control+向下拖动工具栏中的任意位置并释放,将显示一个弹出菜单,在顶部显示“高度”选项,选择它。

您现在可以使用高度约束并根据需要进行调整。

于 2015-11-07T01:07:25.453 回答
7

您也可以只编辑 xib 文件:

将其作为源代码打开并找到定义 UIToolbar 框架的条目,类似于

<string key="NSFrame">{{0,420}, {320,44}}</string>

只需将 44 的值更改为您需要的任何大小。

这样工具栏会更高,并且在 InterfaceBuilder 中,您会看到新尺寸变灰,您将无法更改它,但您不需要任何插座或代码。

于 2013-04-25T18:29:14.137 回答
2

只要您在工具栏上有高度限制,您就可以使用这个小片段,它帮助我调整从 UIView 继承的类的高度

-(void)setHeightConstraintTo:(CGFloat)height forView:(UIView *)view{
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"firstAttribute = %d",          NSLayoutAttributeHeight];
    NSArray *filteredArray = [view.constraints filteredArrayUsingPredicate:predicate];
    if(filteredArray.count > 0){
        NSLayoutConstraint *constraint = filteredArray.firstObject;
        constraint.constant = height;
    }
 }
于 2014-09-23T19:49:52.030 回答
1

我不确定这将如何与 Apple 配合使用——当然这取决于你希望如何使用工具栏——但你可以添加一个默认 UIView 并将其在属性检查器中的类更改为 UIToolbar。这为您免费提供透明度和可定制性(在本例中为高度),但会牺牲条形按钮项的布局。

于 2013-10-18T09:04:21.373 回答
1

快速解决方案:

myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20)

CGRectMake已经过时了。这可以替换为CGRect. 这会将工具栏的高度设置为 20。同样适用于分段控件。

于 2017-08-29T08:53:40.660 回答
0

在界面生成器中,还可以使用“用户定义的运行时属性”。

只需添加一个键路径设置为“矩形”类型的“框架”的条目并设置所需的值。

在此处输入图像描述

于 2017-12-31T21:42:00.587 回答