2010-01-25 82 views

回答

64

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

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

这会让你的工具栏35个像素高。当然,这需要一个IBOutlet或以编程方式创建UIToolbar,但这非常容易。

+9

将尺寸调整'UIToolbar'从AppStore的拒绝? – 2011-12-08 12:03:31

+5

不,我试过并得到了槽。但有时候这取决于你苹果家伙的日常情绪。 – mstottrop 2012-05-21 18:32:45

+0

这不适用于iOS 5 – SpaceDog 2013-04-24 03:14:29

35

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

这将正确调整高度,即使使用hide/show。

+1

我发现,当我有高度的奇数值(非视网膜分辨率),原点偏移0.5像素。我不得不在VC的viewDidLoad方法中更正导航栏和工具栏的框架 – 2012-11-28 18:16:14

+0

@Ege,你能详细解释一下吗? – MarqueIV 2013-01-20 10:16:59

+1

当然@MarqueIV,我重写sizeThatFits的导航条(不工具栏)的自定义高度,结果发现,当我有一个高度不是4点多,当我隐藏导航栏,并重新显示出来,其原始的y值为0.5而不是0.我没有遇到这种行为,当我有一个自定义高度值是4的倍数 – 2013-01-20 13:27:46

45

如果不能在6 SDK工作,可以如下解决:

在工具栏中选择元素,然后选择编辑>针>身高创建的约束。 转到您的视图控制器场景并选择创建的高度(44)约束,然后输入所需的值。

+1

我很高兴我发现了这个评论,我希望我可以投票给你一千倍以上。花费了很多时间试图在代码中弄清楚这一点。 – Kyle 2013-07-03 14:52:08

+0

真的很有帮助,谢谢:) – Niv 2013-11-09 15:31:34

+0

再一次欣赏,徘徊在整个网.. – 2014-03-16 07:54:01

15

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

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

我没有看到它的作品,太棒了! – 2014-03-10 02:29:22

+0

我喜欢你的解决方案。我正在使用UINavigationController中的内置工具栏,所以我无法继承子类。相反,我在'UIToolbar'上添加了'intrinsicContentSize',并返回了我想要的高度。 – 2016-02-26 22:20:54

+0

@KyleRedfearn“我使用UINavigationController中的内置工具栏,所以我不能继承”不正确。 'initWithNavigationBarClass:toolbarClass:'可以让你在导航控制器中使用UIToolbar子类。 – matt 2016-02-26 22:22:50

6

你也可以只编辑XIB文件:

打开它的源代码,并发现,定义帧的UIToolbar的进入,一些沿

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

线

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

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

+0

这似乎不再适用。刚刚在XCode 5.1上进行了测试。1为使用iOS7样式的故事板。值正在重置为其默认值。 – Martin 2014-05-11 21:12:38

+0

实际上适用于ios10 swift,您需要查找的行是'' – Lamar 2016-08-02 16:34:26

1

我不知道这将如何与Apple坐在一起 - 当然这取决于您希望如何使用工具栏 - 但您可以添加一个默认的UIView并将其类属性检查器中的类更改为UIToolbar。这会让您免费获得透明度和可定制性(在这种情况下为高度),但会损失条形按钮项目的布局。

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

有关的Xcode 7.1的iOS 9,在汽车的布局类,大小锁定为44px。 Xcode菜单选项编辑器>引脚>高度不存在,而是执行以下操作:

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

您现在有一个高度约束一起工作,并根据需要进行调整。

+0

辉煌!我爱你!谢谢! – SpaceDog 2015-11-14 09:57:01

+0

好,干净,简单。 – shannoga 2015-12-10 06:47:23

+1

我不认为这适用于UINavigationController中的工具栏。 – SAHM 2016-04-26 01:46:47

0

夫特解决方案:

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

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

0

在Interface Builder中,也有使用“用户定义的属性运行的可能性”。

只需添加使用的keyPath设为型“矩形”的“框”的条目,并设置所需的值。

enter image description here

相关问题