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

我在界面生成器中有一个UIToolbar ,我注意到它被locking为44px高。 当然我想把这个放大一点。

苹果是否允许调整这个控制? 如果是这样,我该怎么办呢?

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

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

这将使您的工具栏35像素高。 当然,这需要一个IBOutlet或以编程方式创buildUIToolbar,但这非常容易。

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

select工具栏元素,然后select编辑器>针>高度来创build一个约束。 转到你的视图控制器场景,并select创build的高度(44)约束,然后把你想要的值。

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

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

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

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

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

在InterfaceBuilder中,单击工具栏元素将其选中。 控制+在工具栏中的任意位置向下拖动并释放,popup菜单将显示在顶部显示选项“高度”,select它。

您现在有一个高度限制来处理,并根据需要进行调整。

你也可以编辑xib文件:

打开它作为源代码,find为UIToolbar定义框架的条目,沿着

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

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

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

只要你有工具栏上的高度限制,你可以使用这个小片段,帮助我调整从UIViewinheritance的类的高度

 -(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; } } 

我不知道这将如何与苹果公司坐在一起,当然这取决于你想如何使用工具栏 – 但你可以添加一个默认的UIView,并将其属性检查器中的类更改为UIToolbar。 这使您可以免费获得透明度和可定制性(在这种情况下为高度),代价是条形button项目的布局。

Swift解决scheme:

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

CGRectMake已经过时了。 这可以用CGRect来替代。 这将设置工具栏的高度为20.对于分段控制也是如此。