有没有办法改变UIToolbar的高度?

时间:2010-01-25 20:31:35

标签: iphone xcode interface-builder uitoolbar

我在Interface Builder中有UIToolbar,我注意到它被锁定为44px高。当然,我想把它变得更大。

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

10 个答案:

答案 0 :(得分:64)

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

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

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

答案 1 :(得分:46)

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

选择工具栏元素,然后选择编辑器> Pin>高度创建约束。 转到View Controller Scene并选择创建的Height(44)约束,然后输入所需的值。

答案 2 :(得分:38)

我发现如果我在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;
};     

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

答案 3 :(得分:15)

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

-(CGSize)intrinsicContentSize {
    return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}

答案 4 :(得分:14)

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

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

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

答案 5 :(得分:6)

您也可以编辑xib文件:

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

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

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

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

答案 6 :(得分: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;
    }
 }

答案 7 :(得分:1)

我不确定这会如何与Apple相关 - 当然这取决于您希望如何使用工具栏 - 但您可以添加默认的UIView并将其属性检查器中的类更改为UIToolbar。这样可以免费提供透明度和自定义性(在这种情况下为高度),但会以条形按钮项的布局为代价。

答案 8 :(得分:0)

Swift Solution:

    // Get the intent, verify the action and get the query
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        Log.v("QUERY", query);
    }

myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20) 已过时。这可以用CGRectMake替换。这会将工具栏的高度设置为20.同样适用于分段控制。

答案 9 :(得分:0)

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

只需添加一个条目,将keypath设置为“Rect”类型的“frame”,并设置所需的值。

enter image description here