无法使用目标 c 更改 uitoolbar 的高度

Posted

技术标签:

【中文标题】无法使用目标 c 更改 uitoolbar 的高度【英文标题】:Can't change the height of uitoolbar with objective c 【发布时间】:2017-08-25 07:26:50 【问题描述】:

我已经成功添加了一个 UIToolBar,代码如下:

-(void) setUpBottom

    UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
    UIBarButtonItem *feature = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"features.png"] style:UIBarButtonItemStylePlain target:self action:@selector(selectFeature:)];

    UIBarButtonItem *fav = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"favorite-outline.png"] style:UIBarButtonItemStylePlain target:self action:@selector(selectFavorite:)];

    //following line was intended to change the height of the tool bar, but it doesn't work.
    [[self navigationController].toolbar setFrame:CGRectMake(0, [[UIScreen mainScreen] bounds].size.height - 55, [[UIScreen mainScreen] bounds].size.width, 55)];

    self.toolbarItems = [NSArray arrayWithObjects:flexible,feature, flexible,fav,flexible,nil];
    [[self navigationController] setToolbarHidden:NO];

让我感到奇怪的是:

当我将 toolBarItems 分配给 [self navigationController].toolbarItems 时,该项目不会显示

我找不到修改工具栏高度的 API,所以我必须修改 [self navigationController] 上的那个不起作用

所以我的问题是如何修改布尔栏的高度,更重要的是,self.toolbarItems[self navigationController].toolbarItems 的关系是什么?谢谢。

【问题讨论】:

【参考方案1】:

UINavigationController 的 ToolbarItems 属性对其自己的工具栏没有影响。

NS_CLASS_AVAILABLE_ios(2_0) @interface UINavigationController : UIViewController

您应该注意,它是从 UIViewController 继承的,并且仅当您将该导航控制器放入另一个导航控制器时才有效。

要增加高度,我认为您不能将其子类化并更改 intrinsicContentSize 或 sizeThatFits

您可以创建 UIView 和广告作为子视图

【讨论】:

你的意思是我应该创建一个 UIView 并将该子视图放在底部作为选项卡而不是使用工具栏吗? 是的,你可以制作另一个解决方案【参考方案2】:

根据documentation:

您可以使用 UIViewController

setToolbarItems:animated: 方法分配一组自定义工具栏项

但我不确定你是否可以改变内置工具栏的高度

【讨论】:

以上是关于无法使用目标 c 更改 uitoolbar 的高度的主要内容,如果未能解决你的问题,请参考以下文章

更改 UIToolbar UIBarMetrics

UIToolbar 内的 UISegmentedControl 的横向高度确实错误

UIToolBar 高度不会改变

更改工具栏高度时如何防止按钮向右移动?

UINavigationController - 显示 UIToolbar 并增加它的高度

Xcode 8 - UIToolbar 高度显示为 1000(CGFloat)