我UIToolbar
在 Interface Builder 中有一个,我注意到它被锁定为 44px 高。我当然想让这个更大。
Apple 是否允许调整此控件的大小?如果是这样,我该怎么做?
我UIToolbar
在 Interface Builder 中有一个,我注意到它被锁定为 44px 高。我当然想让这个更大。
Apple 是否允许调整此控件的大小?如果是这样,我该怎么做?
当然,只是设置不同的框架:
[myToolbar setFrame:CGRectMake(0, 50, 320, 35)];
这将使您的工具栏高 35 像素。当然,这需要一个 IBOutlet 或以编程方式创建 UIToolbar,但这很容易做到。
如果这在 SDK 6 中不起作用,可以解决如下:
选择工具栏元素并选择编辑器 > 引脚 > 高度以创建约束。转到您的视图控制器场景并选择创建的高度(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 中,使用自动布局,最简单的方法是在其中覆盖 UIToolbar 子类instrinsicContentSize
。这是我的一个应用程序的代码,其中工具栏很高。它的侧面和底部像往常一样固定在超级视图的侧面和底部。
-(CGSize)intrinsicContentSize {
return CGSizeMake(UIViewNoIntrinsicMetric, 85);
}
对于 Xcode 7.1 iOS 9,在自动布局中,大小锁定为 44px。Xcode 菜单选项 Editor > Pin > Height 不存在,而是执行以下操作:
在 InterfaceBuilder 中,单击工具栏元素以将其选中。Control+向下拖动工具栏中的任意位置并释放,将显示一个弹出菜单,在顶部显示“高度”选项,选择它。
您现在可以使用高度约束并根据需要进行调整。
您也可以只编辑 xib 文件:
将其作为源代码打开并找到定义 UIToolbar 框架的条目,类似于
<string key="NSFrame">{{0,420}, {320,44}}</string>
只需将 44 的值更改为您需要的任何大小。
这样工具栏会更高,并且在 InterfaceBuilder 中,您会看到新尺寸变灰,您将无法更改它,但您不需要任何插座或代码。
只要您在工具栏上有高度限制,您就可以使用这个小片段,它帮助我调整从 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;
}
}
我不确定这将如何与 Apple 配合使用——当然这取决于你希望如何使用工具栏——但你可以添加一个默认 UIView 并将其在属性检查器中的类更改为 UIToolbar。这为您免费提供透明度和可定制性(在本例中为高度),但会牺牲条形按钮项的布局。
快速解决方案:
myToolbar.frame = CGRect(x: myToolbar.frame.origin.x, y: myToolbar.frame.origin.y, width: myToolbar.frame.size.width, height: 20)
CGRectMake
已经过时了。这可以替换为CGRect
. 这会将工具栏的高度设置为 20。同样适用于分段控件。