我在Interface Builder中有一个UIToolbar
,我注意到它被锁定为44px高。当然,我想让这个更大。有没有办法改变UIToolbar的高度?
Apple允许调整此控件的大小吗?如果是这样,我该怎么办?
我在Interface Builder中有一个UIToolbar
,我注意到它被锁定为44px高。当然,我想让这个更大。有没有办法改变UIToolbar的高度?
Apple允许调整此控件的大小吗?如果是这样,我该怎么办?
当然,只要设置它的框架是不同的:
[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];
这会让你的工具栏35个像素高。当然,这需要一个IBOutlet或以编程方式创建UIToolbar,但这非常容易。
我发现,如果我设置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。
我发现,当我有高度的奇数值(非视网膜分辨率),原点偏移0.5像素。我不得不在VC的viewDidLoad方法中更正导航栏和工具栏的框架 – 2012-11-28 18:16:14
@Ege,你能详细解释一下吗? – MarqueIV 2013-01-20 10:16:59
当然@MarqueIV,我重写sizeThatFits的导航条(不工具栏)的自定义高度,结果发现,当我有一个高度不是4点多,当我隐藏导航栏,并重新显示出来,其原始的y值为0.5而不是0.我没有遇到这种行为,当我有一个自定义高度值是4的倍数 – 2013-01-20 13:27:46
在iOS 6中,使用自动布局功能,最简单的方法是使用UIToolbar子类替代instrinsicContentSize
。这里是我的应用程序中的代码,工具栏很高。像往常一样将其侧面和底部固定在监视器的侧面和底部。
-(CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
我没有看到它的作品,太棒了! – 2014-03-10 02:29:22
我喜欢你的解决方案。我正在使用UINavigationController中的内置工具栏,所以我无法继承子类。相反,我在'UIToolbar'上添加了'intrinsicContentSize',并返回了我想要的高度。 – 2016-02-26 22:20:54
@KyleRedfearn“我使用UINavigationController中的内置工具栏,所以我不能继承”不正确。 'initWithNavigationBarClass:toolbarClass:'可以让你在导航控制器中使用UIToolbar子类。 – matt 2016-02-26 22:22:50
你也可以只编辑XIB文件:
打开它的源代码,并发现,定义帧的UIToolbar的进入,一些沿
<string key="NSFrame">{{0,420}, {320,44}}</string>
,只需将值44更改为您需要的大小即可。
这样工具栏将会更高,并且在InterfaceBuilder中您将看到新的大小变灰,并且您将无法更改它,但是您不需要任何插座或代码。
我不知道这将如何与Apple坐在一起 - 当然这取决于您希望如何使用工具栏 - 但您可以添加一个默认的UIView并将其类属性检查器中的类更改为UIToolbar。这会让您免费获得透明度和可定制性(在这种情况下为高度),但会损失条形按钮项目的布局。
只要你有在工具栏上的高度限制,你可以使用这个小片段,帮助我调整高度,对于继承的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;
}
}
有关的Xcode 7.1的iOS 9,在汽车的布局类,大小锁定为44px。 Xcode菜单选项编辑器>引脚>高度不存在,而是执行以下操作:
在InterfaceBuilder中,单击工具栏元素将其选中。 控制+在工具栏中的任意位置向下拖动并释放,弹出菜单将显示在顶部显示选项“高度”,选择它。
您现在有一个高度约束一起工作,并根据需要进行调整。
夫特解决方案:
myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20)
的CGRectMake
是过时的。这可以用CGRect
代替。这会将工具栏的高度设置为20.对于分段控制也是如此。
将尺寸调整'UIToolbar'从AppStore的拒绝? – 2011-12-08 12:03:31
不,我试过并得到了槽。但有时候这取决于你苹果家伙的日常情绪。 – mstottrop 2012-05-21 18:32:45
这不适用于iOS 5 – SpaceDog 2013-04-24 03:14:29